From f0b2fa9766aea8a2225a98d3e41267469625482e Mon Sep 17 00:00:00 2001 From: krmanik <12841290+krmanik@users.noreply.github.com> Date: Fri, 2 Feb 2024 02:21:24 +0800 Subject: [PATCH 01/11] remove files for mdbook docs --- .github/workflows/publish.yml | 52 - .github/workflows/render_docs.yml | 30 - .gitignore | 9 - README.md | 35 - changelog.asc | 940 ----------------- docinfo.html | 26 - help-ar.asc | 51 - help-ja.asc | 40 - help-ro.asc | 42 - help-ru.asc | 52 - help-zh-CN.asc | 37 - help.asc | 50 - icons/android-chrome-144x144.png | Bin 12948 -> 0 bytes icons/android-chrome-192x192.png | Bin 17817 -> 0 bytes icons/android-chrome-36x36.png | Bin 2657 -> 0 bytes icons/android-chrome-48x48.png | Bin 3649 -> 0 bytes icons/android-chrome-72x72.png | Bin 5800 -> 0 bytes icons/android-chrome-96x96.png | Bin 8115 -> 0 bytes icons/apple-touch-icon-114x114.png | Bin 6649 -> 0 bytes icons/apple-touch-icon-120x120.png | Bin 7001 -> 0 bytes icons/apple-touch-icon-144x144.png | Bin 8621 -> 0 bytes icons/apple-touch-icon-152x152.png | Bin 9224 -> 0 bytes icons/apple-touch-icon-180x180.png | Bin 10984 -> 0 bytes icons/apple-touch-icon-57x57.png | Bin 3217 -> 0 bytes icons/apple-touch-icon-60x60.png | Bin 3447 -> 0 bytes icons/apple-touch-icon-72x72.png | Bin 4102 -> 0 bytes icons/apple-touch-icon-76x76.png | Bin 4330 -> 0 bytes icons/apple-touch-icon-precomposed.png | Bin 12565 -> 0 bytes icons/apple-touch-icon.png | Bin 10984 -> 0 bytes icons/browserconfig.xml | 12 - icons/favicon-16x16.png | Bin 1275 -> 0 bytes icons/favicon-32x32.png | Bin 2318 -> 0 bytes icons/favicon-96x96.png | Bin 8115 -> 0 bytes icons/favicon.ico | Bin 15086 -> 0 bytes icons/manifest.json | 41 - icons/mstile-144x144.png | Bin 11473 -> 0 bytes icons/mstile-150x150.png | Bin 10939 -> 0 bytes icons/mstile-310x150.png | Bin 11800 -> 0 bytes icons/mstile-310x310.png | Bin 26182 -> 0 bytes icons/mstile-70x70.png | Bin 7227 -> 0 bytes icons/safari-pinned-tab.svg | 29 - img/1-decks.png | Bin 17133 -> 0 bytes img/2-navigation_drawer.png | Bin 10516 -> 0 bytes img/3-deck_overview.png | Bin 11973 -> 0 bytes img/4-reviewer.png | Bin 20578 -> 0 bytes img/5-adding.png | Bin 11427 -> 0 bytes img/6-browser.png | Bin 23275 -> 0 bytes img/AlphaTestJoinGroup.png | Bin 58609 -> 0 bytes img/AnkiDesktop.png | Bin 14763 -> 0 bytes img/DebugInfo-ru.png | Bin 104337 -> 0 bytes img/DebugInfo.png | Bin 21692 -> 0 bytes img/ReverseNoteType.png | Bin 10639 -> 0 bytes manual-ar.asc | 1350 ------------------------ manual-ja.asc | 768 -------------- manual-zh-CN.asc | 795 -------------- manual.asc | 1243 ---------------------- removed-features.asc | 86 -- storage-migration-error.asc | 54 - 58 files changed, 5742 deletions(-) delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/render_docs.yml delete mode 100644 .gitignore delete mode 100644 README.md delete mode 100644 changelog.asc delete mode 100644 docinfo.html delete mode 100644 help-ar.asc delete mode 100644 help-ja.asc delete mode 100644 help-ro.asc delete mode 100644 help-ru.asc delete mode 100644 help-zh-CN.asc delete mode 100644 help.asc delete mode 100644 icons/android-chrome-144x144.png delete mode 100644 icons/android-chrome-192x192.png delete mode 100644 icons/android-chrome-36x36.png delete mode 100644 icons/android-chrome-48x48.png delete mode 100644 icons/android-chrome-72x72.png delete mode 100644 icons/android-chrome-96x96.png delete mode 100644 icons/apple-touch-icon-114x114.png delete mode 100644 icons/apple-touch-icon-120x120.png delete mode 100644 icons/apple-touch-icon-144x144.png delete mode 100644 icons/apple-touch-icon-152x152.png delete mode 100644 icons/apple-touch-icon-180x180.png delete mode 100644 icons/apple-touch-icon-57x57.png delete mode 100644 icons/apple-touch-icon-60x60.png delete mode 100644 icons/apple-touch-icon-72x72.png delete mode 100644 icons/apple-touch-icon-76x76.png delete mode 100644 icons/apple-touch-icon-precomposed.png delete mode 100644 icons/apple-touch-icon.png delete mode 100644 icons/browserconfig.xml delete mode 100644 icons/favicon-16x16.png delete mode 100644 icons/favicon-32x32.png delete mode 100644 icons/favicon-96x96.png delete mode 100644 icons/favicon.ico delete mode 100644 icons/manifest.json delete mode 100644 icons/mstile-144x144.png delete mode 100644 icons/mstile-150x150.png delete mode 100644 icons/mstile-310x150.png delete mode 100644 icons/mstile-310x310.png delete mode 100644 icons/mstile-70x70.png delete mode 100644 icons/safari-pinned-tab.svg delete mode 100644 img/1-decks.png delete mode 100644 img/2-navigation_drawer.png delete mode 100644 img/3-deck_overview.png delete mode 100644 img/4-reviewer.png delete mode 100644 img/5-adding.png delete mode 100644 img/6-browser.png delete mode 100644 img/AlphaTestJoinGroup.png delete mode 100644 img/AnkiDesktop.png delete mode 100644 img/DebugInfo-ru.png delete mode 100644 img/DebugInfo.png delete mode 100644 img/ReverseNoteType.png delete mode 100644 manual-ar.asc delete mode 100644 manual-ja.asc delete mode 100644 manual-zh-CN.asc delete mode 100644 manual.asc delete mode 100644 removed-features.asc delete mode 100644 storage-migration-error.asc diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index b52c1b1..0000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Publish - -on: - workflow_dispatch: - push: - branches: - - "main" - -jobs: - main: - name: "Publish docs.ankidroid.org" - if: github.repository == 'ankidroid/ankidroiddocs' - runs-on: ubuntu-latest - steps: - - name: SSH key setup - uses: webfactory/ssh-agent@v0.8.0 - with: - ssh-private-key: ${{ secrets.DOCS_SSH_PRIVATE_KEY }} - - - name: SSH server key setup - run: | - ssh-keyscan ankidroid.org >> ~/.ssh/known_hosts - shell: bash - - - name: Git Checkout - uses: actions/checkout@v3 - - - name: Prepare website directory - run: | - mkdir _site - cp -r img _site/ - cp icons/* _site/ - - - name: Install Asciidoctor - run: | - sudo chown -R $USER /var/lib/gems/ - sudo chown -R $USER /usr/local/bin - gem install asciidoctor - shell: bash - - - name: Render Docs - run: asciidoctor ./*.asc -D _site/ - - - name: Copy Docs to ankidroid.org - run: scp -r _site/* ankidroid@ankidroid.org:/usr/share/nginx/html/ - shell: bash - - - name: Restart nginx web server - # - why? nginx used to fail periodically requiring a restart. But who has access? How to restart? - # This alloww people with publish access a button-push way to force a restart if necessary, - # and the restart is quick enough that doing it on publish is fine. - run: ssh ankidroid@ankidroid.org /usr/bin/sudo /usr/sbin/service nginx restart diff --git a/.github/workflows/render_docs.yml b/.github/workflows/render_docs.yml deleted file mode 100644 index 718c44c..0000000 --- a/.github/workflows/render_docs.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Render Docs - -on: - workflow_dispatch: - pull_request: - push: - -jobs: - render_docs: - name: 'Render Docs' - runs-on: ubuntu-latest - steps: - - name: Git Checkout - uses: actions/checkout@v3 - - - name: Install Asciidoctor - run: | - sudo chown -R $USER /var/lib/gems/ - sudo chown -R $USER /usr/local/bin - gem install asciidoctor - shell: bash - - - name: Render Docs - run: asciidoctor ./*.asc - - - name: Publish Rendered Site As Artifact - uses: actions/upload-artifact@v3 - with: - name: docs.ankidroid.org - path: ./ diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 889bfea..0000000 --- a/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -tools/id_rsa -*.html -*~ - -# KDE directory preferences -.directory - -# Linux trash folder which might appear on any partition or disk -.Trash-* diff --git a/README.md b/README.md deleted file mode 100644 index 562c27f..0000000 --- a/README.md +++ /dev/null @@ -1,35 +0,0 @@ -ankidroiddocs -============= -Source files for the documentation on the AnkiDroid website ankidroid.org. - -* manual.asc → [manual.html](https://ankidroid.org/docs/manual.html) -* help.asc → [help.html](https://ankidroid.org/docs/help.html) -* changelog.asc → [changelog.html](https://ankidroid.org/docs/changelog.html) - -# Preview - -Pull requests generate the HTML manual as an artifact which can be viewed on the [GitHub Actions](https://github.com/ankidroid/ankidroiddocs/actions) page. - -# Compilation -The documentation on this site is written in the Asciidoc syntax, and should be compiled with [Asciidoctor](http://asciidoctor.org/docs/install-toolchain/) - -## Install Asciidoctor -On Ubuntu you should be able to install with apt: `sudo apt-get install asciidoctor` - -On Windows try the following: - * [Install Ruby](https://www.ruby-lang.org/en/installation/) - * Open command prompt with Ruby - * Enter the command `gem install asciidoctor` - -## Compile the .asc source files - * Open terminal or command prompt with Ruby - * Enter the command `asciidoctor FULL_PATH_TO_SOURCE_FILE` - * A file will be generated with the same name as the source file, but with `.html` extension. - -# Contributing translations and corrections - -The preferred method of contributing to the documentation is to fork the `ankidroiddocs` project on github, and send a pull request with your additions in the usual way. However, if you don't know how to use github, you can simply download the "manual.asc" file and send it to a project member or the Google Group. - -To create a translation of the manual, please make a copy of "manual.asc" and add "-LANUGAGE\_CODE" ([list of ISO\_639-1 language codes](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)). For example for Italian submit a translated file called "manual-it.asc" based on the original source file. - -Translations should be periodically updated to reflect any changes in the original manual. Details of all changes can be found in the [list of commits](https://github.com/ankidroid/ankidroiddocs/commits/main/). diff --git a/changelog.asc b/changelog.asc deleted file mode 100644 index c0ed991..0000000 --- a/changelog.asc +++ /dev/null @@ -1,940 +0,0 @@ -:docinfo1: -:sectanchors: -= AnkiDroid Changelog - -== Version 2.16.5 (20230906) -* Fix potential crash in our crash report system. See: Murphy's Law -* Fix incorrect default setting for analytics opt-in. Should be default off. -** Please check your setting if you want to make sure it is off -** Note1: our analytics is always anonymized and never shared as a first step -** Note2: the backend has been disabled for months, so there should be no exposure -** Still this was in error and counter to our strict opt-in ethos. We are deeply sorry. -** We will issue a future update shortly to opt everyone out as a precaution -* Thanks again for your patience waiting for 2.16 - we're on to 2.17 work already! -* We are humbled by the https://opencollective.com/ankidroid[donations] 🤯 - -== Version 2.16.4 (20230827) -* Your dev team is still very excited to be able to release quick fixes for you again! -* Last big stability release for 2.16 series (see below for main 2.16 info) -* https://opencollective.com/ankidroid[❤️ We continue to be very thankful for your support] -* Improved shortcut icons -* Fix card browser scroll position after editing a card -* Improve shared deck download handling -* Fix sound replay on cards -* Fix deck rebuild not updating UI -* Synced with https://crowdin.com/project/ankidroid[community language translations] -* Development for 2.17 is already in progress! -* Are you still reading this? Good luck in your studies 🤓 - -== Version 2.16.3 (20230818) -* We meet Play Store requirements again, so we can release fixes quickly again! -* This is a stability release for the just-released 2.16 series (see below for 2.16 info) -* https://opencollective.com/ankidroid[🤜🤛 Thank you! Your support makes the fixes happen!] -* Fix crash in certain cases adding images -* Fix crash exporting decks with '/' in deck name -* Fix crash displaying whiteboard menu -* Fix crash opening preferences after storage migration -* Remove camera permission (not needed for single photo use) -* Fix sync required indicator not disappearing -* Fix keyboard card answer highlighting whole card -* Fix keyboard card answer causing double-tap -* Fix incorrect deck highlight in tablet mode -* Fix display of saved card searches -* Fix inconsistent italics between Anki / AnkiDroid -* Add ability to map "reschedule" to a gesture -* Allow long preference titles to wrap -* Allow 3rd party cookies in webview to match Anki behavior -* Improve add shortcut icon -* Remove beolingus pronounce feature -* New community-provided translations from https://crowdin.com/project/ankidroid - -== Version 2.16.2 (20230726) -* You waited patiently nearly 3 years for this release! ⌛ Thank you -* What an effort! v2.16 contains 2,693 changes from 143 different authors 🤯 -* AnkiDroid is a labor of ❤️ with a mission to help the whole world learn more -* https://opencollective.com/ankidroid[you can ❤️ us back so we have more time to work on it] -* “Why It Took So Long”: Scoped Storage replaces sdcard Storage -** Faster syncing and importing -** AnkiDroid no longer needs permission to access “All Files”! -** ...But you lose access to data on uninstall -** Sync, export/import, check media/database disabled during migration -** Manage Space Activity in System Settings -** Added “Backup Reminder” prompt -** https://github.com/ankidroid/Anki-Android/wiki/Storage-Migration-FAQ[More info in our FAQ] -* A huge number of crash fixes, too many to mention -* “Auto” Day/Night theming to follow system, Android 13+ themed icon -* Added Anki “New Anki Backend option in advanced settings" - will be default in 2.17 -** We include anki 2.1.61 now, we’re fully up to date! -** Stats Heatmap -** Scheduler v3 support -** CSV Import, Text import -** Card Browser Searches -** Card Info and Deck Options from upstream -* New gesture manager, supports gamepad and bluetooth keyboard -* Translations, new languages, lots of fixes, https://crowdin.com/project/ankidroid/[you can help!] -* Add support for hierarchical tags -* New Onboarding Screen -* New Preferences -** Icons & Better Categories -** Increase max possible backups to 99 -** Full screen navigation drawer option -** Add Preference for double-tap time interval -** “Insert Field” in Card Template Editor option -** Add "Allow sync on metered connections" option -** New “About” section -** “Developer Options” is now available -* Flags added: Pink, turquoise & purple flags as in Desktop -* Drawing Activity -* Custom Sync Server improvements -** Updated to match new Anki Desktop built-in sync server abilities -** Cleartext traffic permitted (it’s your server, use it how you like) -* Javascript AP changes: -** New bury & suspend card or note API -** New search API -** New text to speech API -** Enhanced reschedule API -** New Reset progress API -** Enable DOM storage so localStorage works -* Use language defined in ‘Language Hint’ when typing the answer -* Mathjax updated to current versions -* Double-tap floating ‘+’ Deck Picker button to add note -* Note Editor SVG, video, clipboard paste import support -* Card Previewer progress bar during preview -* Card Previewer: Show type-in answer in card previews -* Card Browser Support for Indeterminate tags when adding/removing tags -* Sync Account Add “Forgot Email” Button -* Add option to show all deck stats by default -* Add Note Gesture -* Ask to keep data when uninstalling (saves preferences too) -* Reviewer: Allow “TTS” to be moved to the Action Bar -* Note Editor: Allow the import of multiple files -* Import/Export -** Fixed many general problems with import/export -** Export just a deck -** Export just a note -* UI: Snackbars used where possible, and made much more pleasant -* UI: Matched the color of status, action and nav bar to background -* Card Browser: “Note” mode -* Whiteboard - Stylus Only Mode - -== Version 2.16.1 (20230726) -* Published internally, not generally released - -== Version 2.16.0 (20230726) -* Unpublished - -== Version 2.15.6 (20210714) -* One more crash fix, no crashes shall be left unfixed! If we can help it. - -== Version 2.15.5 (20210713) -* https://opencollective.com/ankidroid[🤜🤛 Thank you! Your support makes the fixes happen!] -* Full-screen navigation drawer drag is a preference, default off -* Floating Action Button ('+') labels are clickable again -* Fixed crash on first run post-install on tablets -* Fixed odd weekly breakdown stats chart behavior -* Fixed crash creating new deck from deck chooser -* https://crowdin.com/project/ankidroid[Updated translations] (thank you translators!) -* https://github.com/ankidroid/Anki-Android/milestone/47?closed=1[Full Changelog here] -* We are deep into development for v2.16 + Google Summer of Code, lots of new stuff coming -* Happy reviewing! - -== Version 2.15.4 (20210602) -* Saw one crash show up for 2.15.3: if you touched the 3 numbers - instead of the deck name on the deck list on phones, it would crash -* Temporarily revert full screen navigation drawer option to fix - -== Version 2.15.3 (20210602) -* https://opencollective.com/ankidroid[❤️ Thank you so much for the donations! We appreciate it ❤️] -* Another batch of fixes stabilizing all the work done for AnkiDroid 2.15 -* Fix "Search All Decks" in Card Browser not searching -* Make new full screen navigation drawer open optional, default off -* Preserve edited search in card browser if navigation drawer opens -* Fix crash editing Tags dialog when switching back from another app -* Fix incorrect cloze help link -* Increase touchable area of undo icon -* Fix legacy / handebar template parsing -* Fix icon sizes for notifications and search -* Fix audio files incorrectly importing when attached -* Fix deck options "steps" showing up with lots of decimal places -* Update translations, add Kannada language -* Fix F-Droid app store publishing -* Correct navigation away from and back to Changelog -* Fix template parsing for "{{FrontSide}}" -* Fix stats tab view layout in RTL context -* Fix preview of cloze cards from note editor -* https://github.com/ankidroid/Anki-Android/milestone/45?closed=1[Full changelog here] - - -== Version 2.15.2 (20210526) -* https://opencollective.com/ankidroid[❤️ Your donations here give us the time to work on the app, thank you! ❤️] -* 🔥 Hot fixes for 2.15.0 issues (See below for 2.15.0 notes 👇 it was a huge release!) -* 2.15 should have no regressions now we think 🤞 -* That means we'll slow down the releases and these popups now, sorry + thank you -* Fix another API issue breaking card add from external apps -* Fix conditional template issue that caused blank cards for some -* Fix auto-advance ignoring "no advance" setting if card had audio -* Gracefully handle corrupt collections with invalid current decks selected -* Publish to Amazon App Store again (go get AnkiDroid on your Fire devices!) -* https://github.com/ankidroid/Anki-Android/milestone/44?closed=1[Issue tracker milestone here] - - -== Version 2.15.1 (20210525) -* https://opencollective.com/ankidroid[❤️ Your donations funded this rapid set of fixes, enjoy! ❤️] -* 🔥 Hot fixes for 2.15.0 issues (See below for 2.15.0 notes 👇 it was a huge release!) -* Do not auto-update users to scheduler v2. Yet. -* Fix crash on undo after deck delete -* Try harder to successfully paste images -* Reviewer performance fix - only load mathjax if needed -* Fixed compatibility issue for 2.15 collections on 2.14 -* Fixed API issue breaking card add from external apps -* Fresh language translations. See a bad translation? https://crowdin.com/project/ankidroid[You can fix it easily!] -* https://github.com/ankidroid/Anki-Android/milestone/43?closed=1[Detailed issue log] - -== Version 2.15.0 (20210524) -* https://opencollective.com/ankidroid[❤️ Your donations funded these features, enjoy! ❤️] -* Thanks to https://github.com/ankidroid/Anki-Android/wiki/Google-Summer-of-Code-2021[Google Summer of Code] students for a HUGE effort! -* Way too many changes to describe, but here are the highlights: -* New timezone code supported for sync with AnkiDesktop! -* Performance, stability improvements everywhere -* General UI improvements (accessibility, dark mode, design, more) -* Many new keyboard shortcuts and gesture actions -* Languages: Added Odia, Malayalam; big RTL support improvements! -* Reviewer: Javascript API: many new methods -* Improved account login, sync conflict, card template UI -* Tags and Decks dialogs have search! -* Whiteboard: erase, pen colors, stroke width -* NoteEditor: Mathjax 3, capitalize sentences setting -* Huge quality improvements all over codebase, helps future developers -* https://github.com/ankidroid/Anki-Android/milestone/37?closed=1[🚧 Full 638 item changelog here! 🚧] - -== Version 2.14.6 (20210309) -* Reviewer: fix "my card is blank now with 2.14.5! help!" 😱 -* Reviewer: fix Android 8/8.1 review buttons disappear (finally?) - -== Version 2.14.5 (20210307) -* We really appreciate the https://opencollective.com/ankidroid[donations], they paid for these fixes 🤝 -* NoteEditor: Android 11 users can crop! -* NoteEditor: Canceling crop twice won't delete your image -* DeckList: parent limits altered to match Desktop -* DeckList: current deck saved as correct type -* SchedulerV2: allow very small delays -* KNOWN ISSUE: https://github.com/ankidroid/Anki-Android/issues/7369[Android 8/8.1 answer buttons disappear]. Use gestures as workaround. -* Anyone with Android 8/8.1 that reproduces this and knows how to develop Android layouts? We'd love the help! - -== Version 2.14.4 (20210307) -* Re-released immediately as 2.14.5 after release script issue 🤷😅 - -== Version 2.14.3 (20210109) -* https://www.youtube.com/c/TheAnKing[The AnKing] has graced us with a https://youtu.be/iuBU_OM9oAM[new intro video]! 🤓 -* Still happily overwhelmed by the https://opencollective.com/ankidroid[donations] 💪 -* Reviewer: Fix mark note keyboard shortcut -* NoteEditor: Fix to remove padding if removing formatting toolbar -* Previewer: Fix to show same card after edit -* Scheduler: Fix v1 scheduler completes deck when only learn cards due - -== Version 2.14.2 (20201202) -* Wow! We are humbled by the https://opencollective.com/ankidroid[donations] 🤯 -* The resources are already going to contributors to improve the app! Thank you ❤️ -* Note Editor: Fix image crop not working first time -* Note Editor: Paste image at cursor not end -* Note Editor: Fix Ctrl+C opens preview -* Note Editor: Add menubar toggle to disable editing toolbar -* Home Screen: Fix Vivo device shortcut creation (again) -* Reviewer: Fix numeric keypad not working -* Note Editor: Fix cloze cards going to wrong deck -* Navigation Menu: Fix safe display app hang -* Preferences: Fix gestures menu translation / ordering issue -* Translations: thanks https://crowdin.com/project/ankidroid/activity_stream[translators!] - you can help too! -* Full changelog: https://github.com/ankidroid/Anki-Android/milestone/39?closed=1 - -== Version 2.14.1 (2020-11-23) -* Always free, always open source, but you may https://opencollective.com/ankidroid[donate if you like 😊] -* Move sync button to right of action bar (vs search) -* Fix duplicate note detection -* Fix add deck shortcut on Vivo devices -* Fix non-translatable 'Card Info' strings -* Fix suspended card handling in filtered decks -* Sync translations from volunteers on our crowdin.com site (thank you!) -* Fix crash on mismatched WebView ABIs -* Fix crash invalid filename handling while pasting image -* Fix crash selecting cards in card browser -* Fix crash Android 8 in card browser -* Fix crash in undo labeling -* Fix crash reset password when system browser not exported -* Full changelog: https://github.com/ankidroid/Anki-Android/milestone/38?closed=1 - -== Version 2.14.0 (2020-11-18) -* Enabled Donations - we ❤️ you, https://opencollective.com/ankidroid[now you can ❤️ us 😊] -* New Screen: Card Info (from Card Browser or as a Reviewer App Bar Button) -* New Screen: Help - easy access to manual, many community pages/manuals, donation page, translations -* Home screen: Add deck shortcut -* Deck Options: SchedV2: Support setting "Hard Factor" -* Card Browser: Add deck filtering -* Card Browser: Filter By Flag -* Card Browser: Adding cards defaults to selected deck -* Card Browser: Many more keyboard shortcuts -* Card Browser: Display the number of cards deleted when deleting a note -* Card Browser: Better handling of deck searches containing wildcards -* Reviewer: Basic Android TV Support -* Reviewer: New Gesture: Abort Learning & Sync -* Reviewer: Support AnkiMobile 9-area gesture touch layout -* Reviewer: Improve "Empty Card" UX -* Reviewer: Keyboard shortcuts for flags (Ctrl+1...4) -* Note Editor: Editor Toolbar (& keyboard shortcuts) - hugely requested feature! -* Note Editor Toolbar: Apply Custom Commands (& keyboard shortcuts) -* Note Editor: Paste to Insert Image -* Note Editor: Made fields full-width -* Note Editor: Change Font Size for fields -* Note Editor: Expand/Collapse Fields -* Note Editor: Clear Field button -* Note Editor: Ctrl+Shift+[Num] to switch fields -* Note Editor: Improved image addition / naming -* Note Editor: Add preference to convert newline to HTML (or not) -* OS Integration: Default to "Anki Card" in system context menu vs "Card Browser" -* Libanki: Add FileUpload API -* Translations: Tagged screenshots on crowdin.com to help our translators -* Stability: Fix rare crashes (down to ~50/day total w/1.8million installs!) -* Performance: massive number of speedups -* Dev: Massively sped up AnkiDroid builds and improved code readability -* Totals: 345 code changes and hundreds of translations, made by volunteers, in 2 months -* Full changelog: https://github.com/ankidroid/Anki-Android/milestone/30?closed=1 - -== Version 2.13.5 (2020-10-03) -* Fix performance for fast (<1s) answers in review -* Add links to new Arabic help/manual translation -* Add back button handling to changelog display -* Add rate button to changelog -* Add warning message to handle future db upgrades -* Sync all translations from our volunteer translators (thanks everyone!) - -== Version 2.13.4 (2020-09-29) -* Fix crash showing TagsDialog -* Fix crash in gesture detection -* Improve import interrupted error message -* Fix scheduler counts after undo -* Fix Card Browser preview after sort -* Fix button display if answer animation incomplete -* Sync all translations - -== Version 2.13.3 (2020-09-23) -* Fix double-clicking answer buttons skipping cards -* Change missing media warning to twice-per-session not twice-per-deck -* Change answer button fade on open -* Updated all translations from volunteer crowdin.com site up to 20200923 - -== Version 2.13.2 (2020-09-19) -* Fix Crash rare on Card Browser exit -* Fix Crash Android 4.4 -* Fix Open Deck failures / improve related messaging -* Fix messaging for Xioami cloze workaround -* Move "set field language" after share on Note Editor context menu - -== Version 2.13.1 (2020-09-17) -* Add cloze via clipboard paste workaround on MIUI/Xiaomi devices -* Fix Navigation drawer respects safe display / disable animations preference -* Fix Reviewer buttons respect safe display / disable animations preference -* Fix Deck Picker bottom bar opacity -* Fix Error message about missing content on cards -* Fix crash selecting deck that disappears during sync - -== Version 2.13.0 (2020-09-15) -* Field tag (such as "{{Front}}") appearing in a note's field will be shown as-is in cards. -* Add Sync icon badge when changes are pending sync (can be disabled in options) -* Add Edit Note from card Preview while in Card Browser -* Add "Anki Card" to system context menu (like "Card Browser") - disabled by default -* Add Set keyboard language for specific fields in the note editor (example: one field Japanese, other field Portuguese for input). -* Add Keep keyboard open after adding a note -* Add Card properties available in JavaScript API -* Add JavaScript API versioning for scripts (basis for future plugins) -* Add Auto-Login when selecting saved user account -* Add Allow import of collection.anki21 files when under SchedV1 -* Add New screen for first-time users -* Add Button animations when answering cards -* Add Note Editor: Add shortcuts Ctrl+(Alt)+Shift+C to add a cloze. -* Fix Some cards in learning were not shown at the right time (Only if you undo/bury/suspend/reset/reschedule and the next card goes to learning mode) -* Fix Selected deck has translucent background if a deck picker background is set -* Fix Improved preview screens -* Fix Better accessibility in Deck Browser for partially sighted users -* Fix Improve visibility of "Add/Remove Option Group" -* Fix Improved messages for sync rate limiting error -* Fix Improved messages for reducing study limits -* Fix Improved messaging when collection is missing media -* Fix Improve feedback when accessing Debug Info -* Fix Add additional warnings to reschedule dialog -* Fix Whiteboard pen color can be disabled by pressing icon again -* Fix Ensure all menu items in the reviewer can be customized by "App Bar Buttons" setting -* Fix Scheduler discrepancy handling early interval on filtered decks -* Fix Exports work when cards are missing media -* Fix Crash due to logging. -* Fix Toasts used to show one more card than the number of card actually reviewed during the time box -* Fix Handle newlines properly in Note Editor Preview -* Fix Improve AnkiDroid opening animation -* Fix Show correct answer button when answering via Keyboard -* Fix "New Cards Added" Statistic -* Fix Crash when inserting a cloze when selecting text from right-to-left via keyboard -* Fix "Show Password" icon revealing saved password -* Fix Card browser still contains card after the app goes into background -* Fix Daily unbury occurs during sync if necessary -* Fix On big screen, buttons moved during loading -* Translators If some text change because of minor changes (typos) you won't have to translate it again -* Performance improvements (specifically: initial loading of large collection (lot of decks, note type, card type, fields, long templates...), card browser, deck picker startup, next card view, undo, cancelling tasks such as computing a list of card in browser) -* Dev: Massive dev workflow improvements and automated checks for our translations. -* Dev: Implement backend for CSV Importer -* Dev: Improve crash reporting on app startup -* Dev: Massive improvement in testing, especially around scheduler / card queue behavior -* Full changelog: https://github.com/ankidroid/Anki-Android/milestone/27?closed=1 - -== Version 2.12.1 (2020-07-21) -* Fix bug previewing edited notes after changing field count -* Fix crash previewing edited notes from dynamic decks -* Fix crash restarting app after a crash -* Full changelog: https://github.com/ankidroid/Anki-Android/milestone/28?closed=1 - -== Version 2.12.0 (2020-07-18) -* Add Crop image feature -* Add Preview in note editor -* Add edit tags in reviewer -* Add volume buttons as gestures -* Add whiteboard pen color -* Add microphone tool bar in reviewer -* Add javascript API (check the Wiki!) -* Improve: app is 3MB smaller -* Fix: show whole tag in tags dialog -* Fix copy note copies tags too -* Fix data corruption canceling template edits -* performance and bug fixes everywhere! - -11 volunteers made hundreds of individual changes this release - -Full changelog: https://github.com/ankidroid/Anki-Android/milestone/18?closed=1 - -== Version 2.11.3 (2020-06-17) -* Fix out-of-memory errors when importing very large decks -* Fix incorrect out-of-space message on import in Android 4 -* Fix crash if card viewer closed quickly after view -* Fix unzip fail on .apkg files >2GB -* Fix crash on edit note in browser multi-select - -== Version 2.11.2 (2020-06-10) -* Add santali language -* Fix Hebrew, Indonesian, Tagalog languages -* Improve error reporting around apkg import failures -* Details: https://github.com/ankidroid/Anki-Android/milestone/24?closed=1 - -== Version 2.11.1 (2020-06-08) -* Fix crash in Card Browser multi-select mode -* Fix Custom Steps interval dialog space entry issue -* Fix flags don't export with deck -* Fix AnkiDroid API doesn't handle null model id (Anki Compatibility workaround) -* Fix translation crash in sync dialog in Azerbaijani -* Details: https://github.com/ankidroid/Anki-Android/milestone/23?closed=1 - -== Version 2.11.0 (2020-06-05) -* Android minimum supported version is now 4.1 / Jelly Bean / API16 (AnkiWeb Compatibility) -* Change sibling burying should default to off (Anki Compatibility) -* Change learn cards do not go in filtered decks in v1 sched (Anki Compatibility) -* Add Browser Appearance screen, to edit Card Browser render format (Anki Compatibility) -* Add guidance in Note Editor if no cards will be generated despite full fields -* Add all translations from our crowdin.com translation site -* Add ability to decrease daily limit in custom study (Anki Compatibility) -* Add ability to block gesture handling when tapping hints in Reviewer -* Add create subdeck option in deck list long-press context menu -* Add edit note action in Card Browser multi-select mode -* Add ability to turn off 'Card Browser' system text context menu item -* Add nightMode CSS selector for card HTML (Anki Compatibility) -* Add ability to change just the case of a deck name -* Add page-up/page-down gestures -* Improve gesture handling in full-screen / immersive mode -* Improve handling of cloze deletion in TTS mode -* Improve Card Browser search from Android text selection menu -* Improve Card Browser with default hide of media filenames -* Improve Reviewer auto-advance by waiting for TTS to finish -* Improve transparent SVG display in night mode with white background -* Improve anki package import handling -* Improve AnkiWeb login form enter button handling -* Improve hardware back button handling in restore from backup -* Improve Reviewer display of un-rendered LaTeX -* Improve TTS / auto-answer combination, wait for TTS before advance -* Workaround Firefox open downloaded deck bug -* Workaround crash on Samsung devices with >500 deck reminders -* Fix card template editor mistakenly allowing add template on cloze type -* Fix language change preference -* Fix ability to unbury a deck in deck list -* Fix app bar item flicker during review -* Fix V2 scheduler learning card count after undo -* More details: https://github.com/ankidroid/Anki-Android/milestone/13?closed=1 - -== Version 2.10.4 (2020-05-31) -* Workaround expired AnkiWeb SSL Root certificate -* More details: https://github.com/ankidroid/Anki-Android/milestone/22?closed=1 - -== Version 2.10.3 (2020-05-29) -* Fix crash on no permissions on Card Browser system text menu entry -* Fix crash in widget if external storage unmounts -* Fix crash on device reboot if no permissions -* Fix crash if deck picker background image too large -* Fix crash in tags dialog -* Fix bad data generated for null objects (Anki compatability) -* Details here: https://github.com/ankidroid/Anki-Android/milestone/21?closed=1 - -== Version 2.10.2 (2020-05-14) -* Fix type answer cards not rendering correctly -* Fix type answer card template creation on non-English new installs -* Fix frequent full sync caused by incorrect learning card counts -* Fix crash importing into fresh install with no storage permission - -== Version 2.10.1 (2020-05-13) -* Updated all translations from crowdin translators -* Fix crash note editor on rapid back button -* Fix crash from incorrect Thai translation - -== Version 2.10 (2020-05-12) -* Add welcome dialog explaining need for storage permission -* Add support for Flags on cards (including flagging by gesture) -* Add ability to set background image in Deck Picker -* Add localization of standard templates created in fresh install -* Add support for card javascript to reload current card programmatically -* Add support for restricted learning / classroom devices -* Add preference to disable "Extended Text UI" full-screen editor -* Add CSS style capability to heavy checkmark and down arrow in card -* Add display of current interval on reschedule dialog -* Add support for card javascript to answer cards programmatically -* Add ability to toggle sticky field in field editor -* Improve deck list newline, style, script tag handling in deck descriptions -* Improve whiteboard on/off state handling, especially between day/night mode -* Improve multi-selection options in CardBrowser -* Improve performance (systematic optimization process, lots of improvements!) -* Improve handling of erroneous notes (missing fields, improper clozes) -* Improve user messaging on network connection failures -* Improve counting of suspended/buried cards in advanced statistics -* Improve v2 scheduler compatibility with Anki ecosystem -* Improve handling / detection of full sync need -* Improve Anki compatibility by allowing more field/model/deck name characters -* Improve deck list estimated review times with human scale times -* Fix text scaling bug in card browser -* Fix crash in export while using v2 scheduler -* Fix Custom Tabs crash with non-default system web browser -* Fix issues with import of packages with long Unicode names -* Fix incorrect intervals on lapsed filtered v2 scheduler cards -* Fix multimedia editor save/cancel behavior -* Fix incorrect button/gesture availability while existing task is still active -* Fix type answer crash on invalid characters -* Fix cloze references not being recognized in all fields -* Fix invalid ability to change deck to a filtered deck -* Fix crashes on adding invalid images, audios, and videos -* Fix CardBrowser crash after deleting card -* Fix crash and help user if no browser detected -* Fix Reviewer crash if card not available -* Fix crash / improve import of pasted decks -* Fix clicking hint field blocks key input in Reviewer -* Fix Previewer forgetting which card to show on device rotation -* Fix Mathjax/cloze interactions -* Fix vertical alignment of touch area in full-screen review -* Fix handling of ':::' in deck names -* Fix incorrect display of HTML comments in card browser - -== Version 2.9.7 (2020-04-30) -* Fix crash / workaround deck options timer config regression in AnkiDesktop - -== Version 2.9.6 (2020-04-03) -* Fix multimedia crashes (permissions handling, image add, preview) -* Fix UI and crashes in database check (user dialog + exception handling) -* Fix Windows 10 image compatibility issue with image paths -* Fix AnkiDesktop sync compatibility issue if more than 1000 cards due -* Fix crash in card browser render -* Fix parsing of image tags in card browser -* Fix crash in StudyOptionsFragment -* Fix issue with deck options group changing on export -* Fix issue with exports containing unexpected media -* Fix issue with dynamic decks (crash fix, export fix) -* Fix high frequency issue "AnkiDroid directory is inaccessible" -* Fix high frequency WebView (card viewer) crash -* Add columns to card browser (due, ease, changed, created, edited) -* Fix card scheduler not respecting maximum intervals -* Fix card browser spins forever on images or empty strings - -== Version 2.9.5 (2020-03-15) -* Fix crash rendering card list while updating card browser search -* Fix case-sensitivity issue with pronunciation words not being found -* Fix crash caused by auto-sync on startup showing dialog too soon -* Fix crash on preview of TTS cards showing language selectiond dialog too slowly -* Fix crash on import if collection not found -* Fix Anki ecosystem deck configuration issue for Anki Desktop users <= 2.16 -* Fix crash if user attempts to open camera or gallery and no app is available -* Fix crash building deck reminders while deck is synchronizing -* Fix crash related to audio recording stop -* Show helpful messages if import fails because device is out of space -* Fix crash when taking pictures on devices with Lollipop and older - -== Version 2.9.4 (2020-02-18) -* Fix crash when fetching pronunciations in note editor -* Fix issue with pronunciation words not being found -* Fix crash on startup for users with auto-sync on startup -* Fix crash on deck import when app is in background -* Fix crash for users of Google Chrome Canary -* Fix crash when adding certain audio clips -* Fix crash related to fetching Sound metadata -* Fix issue where audio plays twice - -== Version 2.9.3 (2020-02-09) -* Fix issues with connection timeouts and new encryption library -* Fix incorrect handling of decks with ':::' in their name - -== Version 2.9.2 (2020-02-03) -* Add support for new AnkiWeb encryption changes -* Fix some bugs using filtered decks -* Fix crash on app startup with uninitialized collection -* Fix some issues with new cloze deletion menu -* Fix issue with Mathjax + cloze deletion -* Fix incorrect intervals bug with new scheduler -* Add various patches from Anki Desktop - -== Version 2.9.1 (2019-10-16) -* Fix crash reviewing on Android 5 - 7 -* Fix crash on Hungarian translation - -== Version 2.9 (2019-10-14) -* Change to new adaptive icon -* Add multi-select in the card browser (delete, change deck, reschedule) -* Add support for new Anki 2.1 scheduler -* Add support for Mathjax -* Add ability to add local audio files to notes -* Add ability to specify filename and folder on export and import -* Add ability to insert cloze in Note Editor -* Add ability to reposition cards -* Add ability to use due reminders for specific decks -* Add support for gamepad input when reviewing -* Add support for common keyboard shortcuts from Anki Desktop -* Add ability to search in Card Browser for text from system context menu -* Add ability to recognize tts HTML elements in questions and answers -* Add ability to display LaTeX rendered to SVG (vs PNG) from Anki Desktop -* Add confirmation check for full sync trigger in preferences -* Fix excessive pull-to-sync false positives. Disable when not at top of page. -* Fix some issues with focus in Note Editor -* Fix media sync errors related to file creation issues -* Fix crash related to use of camera without permission or no camera hardware -* Fix crash related to Card Browser allowing preview with no cards selected -* Fix crash in Reviewer when collection inaccessible -* Fix crash related to TTS when TTS not initialized -* Fix crash related to sdcard mount/unmount on inaccessible collection -* Fix crash related to audio button being visible after loading pronunciation media -* Fix crash when attempting to import invalid zip files -* Fix crash related to switching from split-window mode to single-window mode -* Fix crash related to missing preferences in Preference editor -* Fix crash on deck selection after deleting a deck and immediately closing app -* Fix crash in Reviewer when non-standard browser installed -* Fix type-answer field showing unexpectedly after undo in Reviewer -* Fix incorrect display of some characters when using type-answer -* Fix error related to media in subfolders not showing in Reviewer -* Fix some issues with generated flashcard html and CSS selectors -* Fix some Glosbe and Beolingus regressions -* Fix issue where new deck was created when note type was renamed -* Fix add note button disappearing from Card Browser when returning from search -* Fix some statistics display issues -* Fix incorrect display of some preferences -* Fix invisible notification bar in NoteEditor -* Fix newline characters not working in cloze deletions -* Increase max card count display from 1000 to 99999 -* Improve display handling of very long review intervals (> 68 years) -* Improve next/back buttons when using Previewer on multiple cards -* Improve handling of selected deck between statistics, card browser and deck picker -* Improve Card Browser search by restoring when returning from other activities -* Improve card focus handling when moving between Note Editor and Card Template Editor -* Improve labeling of deck-group vs deck-specific options -* Improve formatting of HTTP error codes during sync -* Improve handling of multi-touch events while whiteboard displayed -* Improve permission dialog descriptions -* Improve handling of "preview new cards" setting when creating custom study deck -* Improve Navigation Drawer performance on older devices -* Improve database check dialog with addition progress updates during check -* Use different notification channels for study reminders and general notifications -* Drop support for Android < Ice Cream Sandwich MR1 (API15, Android 4.0.3) -* Add support for more features on Chromebook (import, export, restore backup, camera) -* Add API support for card/note bury and suspend -* Add API to open Reviewer on specific decks from other apps -* Add support for HTML/Javascript debugging -* Add link to third party apps which support AnkiDroid API in advanced preferences -* Fix issue with custom sync server certificates -* Perform basic DB integrity check on app upgrade -* Introduce optional analytics reporting - -== Version 2.8.4 (2018-04-27) -* Fix error syncing due to too many card templates - -== Version 2.8.3 (2017-11-10) -* Fix crash adding a picture from camera -* Fix add note icon disappearing in browser after search -* Fix translations from Glosbe -* Fix crash long-tapping when no deck is selected -* Fix crash entering advanced settings on some devices -* Fix incorrect graph display in statistics -* Fix deck not changing properly in statistics -* Fix rounding error in statistics weekly breakdown -* Fix spurious new deck created on model rename -* Improve error message on exception during media sync -* Improve animation when transitioning between screens -* Use a round icon on devices that support it - -== Version 2.8.2 (2017-02-28) -* Fix bugs showing confirmation dialogs in various places -* Fix uncommon crash showing dialog after sync - -== Version 2.8.1 (2017-02-06) -* Allow sending exported apkg to arbitrary app (e.g. Google Drive) -* Allow AnkiWeb to display a warning on sync completion -* Fix potential full-sync after sync cancellation -* Fix media sync sometimes scanning all files again -* Fix removing $ character when importing media files -* Improve automatic card answer timing when audio is played -* Improve rendering of some statistics -* Fix some crashes in the Russian, Vietnamese, and Chinese translations -* Fix crash sending exported apkg by email. NB: Export path can no longer be modified. - -== Version 2.7 (2016-10-16) -* Add pull-to-sync feature -* Add option to place answer buttons at the top -* Add widget to directly access "Add note" screen -* Fix issue with importing whole collections and restoring backups -* Fix deck import failing after the first successful one -* Fix cards in learning queue not being randomized -* Fix crash with fullscreen mode and hidden answer buttons -* Fix rare crash when opening deck options -* Improve support with TalkBack - -== Version 2.6.1 (2016-07-08) -* Add card cycling in previewer (similar to desktop client) -* Add option to hide 'minutes left' in reviewer -* Fix language from app setting not always being used -* Fix not being able to play back new sound recording -* Fix potential crash on Android 2.3 (Gingerbread) -* Improved use of horizontal space when resizing large images -* Minor adjustment to black theme colors - -== Version 2.6 (2016-06-14) -* Add two new themes (black, plain), selectable in preferences -* Make reviewer app bar icons customizable -* Split "hide / delete" menu in reviewer into "bury", "suspend", "delete note" -* Reviewer undo button now removes last stroke when whiteboard in use -* Add menu entry to change TTS language from reviewer -* Add more of the statistics available on the desktop client -* Add "advanced statistics" plugin (must be enabled in advanced settings) -* Add setting to configure custom sync server (advanced) -* Fix card templates created in AnkiDroid incorrectly using bold style -* Fix many importing issues (behavior now consistent with the desktop client) -* Fix long-tapping card in browser not always working -* Update sound playback button image -* Reduce size of whiteboard and gesture area for better interoperability with full screen -* Improve error messages with inaccessible collections -* Allow auto-play of HTML media elements (for templates that enable it) -* Significant updates to the content provider and API (for developers; see documentation) -* Many small bug fixes, improvements, theme adjustments, translation updates - -== Version 2.5.4 (2015-12-14) -* Fix background color in overflow menu of deck picker - -== Version 2.5.3 (2015-12-14) -* Fix floating action button (blue +) interfering with deck list on Android 2.3 -* Fix opening apkg files from Gmail -* Fix automatic playback of consecutive videos -* Add a new launch screen -* Improve behaviour surrounding the deck overview screen -* Multiple media files can now be added to one field in the note editor -* Don't include unused media files on export -* Undo behaviour is now consistent with the desktop client (can no longer undo note edits) -* Enhancements to sync canceling -* Minor performance enhancements, crash fixes, and UI tweaks - -== Version 2.5.2 (2015-12-04) -* Fix start-up crashes on Samsung devices running Android 4.2 -* Fix crash for new users on Android 6.0 -* Reverted to old typing method. The new method is now an option which is off by default. -* You can now click on the numbers in the right-most part of the deck list to open the deck overview screen -* Various fixes to transition animations and progress bars -* Add option to remove empty cards (previously only possible on desktop) -* Remove: Google Translate filter. In practice, this feature had no effect and is not required -* Remove: Google image search for multimedia card. The image search API has been discontinued by Google and no longer works - -== Version 2.5.1 (2015-12-01) -* Fix crash when loading deck list (could not open collection bug) -* Fix visible progress bar showing when answering card - -== Version 2.5 (2015-11-30) -* Redesign of user interface to use material design -* Add new dark theme -* Simplify the study process by bypassing deck overview screen -* Add ability to add, edit, delete note types -* Add setting to enable auto-sync and a Tasker intent to trigger sync -* Replace "instant add" feature with new API for 3rd party apps to add cards directly to AnkiDroid -* "Type in the answer" input box now built into the card html itself -* Make fullscreen-mode immersive and added setting to hide answer buttons when using gestures -* Add css class for customizing card background color when night mode is enabled -* Allow changing media volume from the deck picker -* Add ability to save and view common searches in the card browser -* Browser now shows full question and answer in the results by default -* Only show tags relevant to that deck when doing custom study by tag -* Fix some bugs in the widget -* Remove "simple interface" -* Remove support for Android version 2.1 and 2.2 (minimum is now 2.3.3) -* Add support for Android 6 Marshmallow -* Disable write-ahead-logging in sqlite database -* Many other bug fixes and small improvements - -== Version 2.4.4 (2015-10-20) -* Fix playback of sound files with apostrophes in file name -* Fix new card siblings not being buried for the same day -* Fix media on cards when using the Hebrew Fix option -* Fix crashes related to "Relative overdueness" and make this sort order available on AnkiDroid -* When mixing new and review cards, make their rotation more consistent with desktop - -== Version 2.4.3 (2015-04-21) -* Fix "unknown field" bug -* Fix crash showing welcome screen on Android 2.3 -* Fix crash caused by widget -* Fix rare crash in browser -* Fix a couple of sync issues -* Fix crash starting AnkiDroid on a small number of devices -* Update translations - -== Version 2.4.2 (2015-03-18) -* Fix some bugs with cloze templates -* Fix a translation error - -== Version 2.4.1 (2015-03-15) -* Fix some bugs with filtered decks -* Improve importing of shared decks -* Open settings if AnkiDroid dir inaccesible -* Fix a bug with zooming -* Fix a bug where old card was still shown in reviewer after changing deck -* Fix some issues with cloze deletion -* Fix various crashes -* Update translations - -== Version 2.4 (2015-01-28) - * Move "preview" feature to browser - * Add ability to change note type of existing flashcards - * Add ability to view and delete card templates - * Fix TTS for most devices - * Support playback of videos (see supported formats http://developer.android.com/guide/appendix/media-formats.html[here]) - * Improve rendering of second column in browser - * Improve detection of swipe gestures - * Increase number of languages in Glosbe translator - * Add support for Chromebooks - * New crash report system - * Bug fixes - -== Version 2.3.2 (2014-11-06) - * Bug fixes: Sync, TTS, Remote images, Advanced editor, Export - * Note: This is the last version of AnkiDroid supported by AnkiWeb. Previous versions will not sync. - -== Version 2.3 (2014-10-27) - * Add new user manual - * Make statistics identical to Anki Desktop - * Fixes to media sync - * Fix bug where images were not showing - * Change layout of note editor - * Add new disable whiteboard option to reviewer and update icons - * Add full support for APKG export and import - * Add feature to email exported APKG - * Increase default number of backups and use APKG - * Make preview card accessible from card browser - * Make shared decks download with Android browser - * Add reset and reschedule feature in note editor - * Add a new notification system and icon - * Replace tutorial deck with new welcome screen - * Disable opening navigation drawer from reviewer when swipe is used - * Improve audio recording quality - * Support sticky fields when enabled in Anki Desktop - * Many other bug fixes - -== Version 2.2.3 (2014-08-04) - * New media sync protocol - * Fix 2 bugs for opening links and resuming the app - -== Version 2.2 (2014-07-21) - * Redesign layout - * Add pictures and sounds to flashcards (experimental) - * Make second column in card browser configurable - * Make images on flashcards zoomable - * Improve preview feature and access via action bar - * Simplify menus and settings - * Make slow searches in card browser cancellable - * Improve adding/removing tags - * Fix "type in the answer" and cloze deletion features - * Fix whiteboard feature - * Restore backups from within the app - * Make volume duck on any background music when sounds played - * Make playing of sounds consistent with Desktop version - * Remove animations feature due to being buggy - * Improve speed of showing cards - * Remove duplicate check dialog when adding new flashcards - * Remove swap button when adding or editing flashcards - * Remove kanji info feature (will become optional plugin in the future) - * Make minimum Android version 2.1 - * Fix lots of bugs - -== Version 2.1.3 (2014-04-05) - * Create new notes in correct deck - * TTS fixes - -== Version 2.1 (2014-03-27) - * Lots of Bug Fixes - * New custom study option with improved tag selection - * New preview card feature in note editor (experimental) - * New override font preference in addition to default font - * New "Kanji Info" feature (enabled in preferences->reviewing->Kanji Info) - * Improve Aedict integration - * Support for Samsung Multi-Window - * Fix Some TTS Issues - * Updated Translations - * Remove unused media check when deleting decks - * Significantly increase speed for reducing filtered decks - * Remove upgrade wizard - -== Version 2.0.4 (2014-02-03) - * Fix issue with typing answers - * Default font now overrides card font - * Fixed audio playback image being covered by text on Android 2.3 - * Fixed reviewer crash when language set to Romanian - * Translation fixes - -== Version 2.0.2 (2013-12-15) - * Fixed lots of crashes - * Tablet UI fixes - * Fixed new card ordering issues - * Card appearance now matches desktop Anki. (Centering cards is off by default but can be re-enabled) - * Option groups can now be changed in AnkiDroid - * Clear error message when using a bad template - * Fixed timeboxing notifications - * Properly scale images - * Better custom font handling - * More settings (next day starts at, timeboxing value, etc.) - * Changing AnkiDroid interface language now works. - * Fixed import/shared deck download issues ("not a valid apkg file") - * Fixed invisible text on Motorola devices - * Focus on answer when revealed - * Filtered decks are now blue in deck list - * Removed unused circle button in note editor - -== Version 2.0.1 (2013-02-06) - * Upgrade wizard - * Fix importing apkgs - * Fix media syncing - -== Version 2.0 (2013-01-03) - * complete revision - * libanki2.0 scheduling - * new learning mode - * new layout - * merge syncing possible now - * better statistics - * decks are now saved in a single collection - * options are shareable now - * tablet layout - * tons of performance improvements - * card import function - * collection can be saved on internal memory - -== Version 0.1 to 1.1.3 -AnkiDroid has continuously evolved collectively as an open source project, with the first version released to the Google Market on http://nicolas-raoul.blogspot.jp/2009/06/just-published-ankidroid-on-market.html[June 28 2009]. -Version 1.1.3 was the last 1.x version (released on 26th June 2012), before the incompatible AnkiDroid v2.0 was released, -essentially rewritten from scratch to be compatible with the new Anki Desktop v2.0. diff --git a/docinfo.html b/docinfo.html deleted file mode 100644 index dda5e7f..0000000 --- a/docinfo.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/help-ar.asc b/help-ar.asc deleted file mode 100644 index d2cc91e..0000000 --- a/help-ar.asc +++ /dev/null @@ -1,51 +0,0 @@ -:docinfo1: -[.rtl] -= دعم أنكيدرويد -:sectanchors: - -[.text-left.big] -(link:help-ja.html[日本語]) (link:help-ru.html[Русский]) (link:help-zh-CN.html[中文]) (link:help-ro.html[Română]) - -== قبل السؤال - -قبل طلب المساعدة، الرجاء محاولة البحث في link:manual-ar.html[دليل أنكيدرويد]، -وقائمة https://github.com/ankidroid/Anki-Android/wiki/FAQ[الأسئلة المتكررة]، -و https://docs.ankiweb.net/#/[دليل أنكي الرئيسي] للمساعدة العامة بخصوص نظام أنكي وميزاته، وأي أمور غير محصورة بأنكيدرويد. - -== دعم -إذا لم تجد ما تبحث عنه في الوثائق المذكورة في الأعلى، الرجاء زيارة واحد من المواقع التالية: - -أمور غير محصورة بأنكيدرويد :: أنكيدرويد (نسخة الأندرويد من أنكي) منشأ ومدار بشكل مستقل عن النسخ الأخرى. -لإصدارات الحاسوب / الويب / أي أو إس، والأمور غير المحصورة بأنكيدرويد، الرجاء زيارة https://forums.ankiweb.net/[موقع دعم أنكي] الرئيسي. - -أسئلة أنكيدرويد :: للأسئلة والمساعدة بخصوص أنكيدرويد، الرجاء زيارة https://groups.google.com/forum/#!forum/anki-android[منتدى المستخدمين]، -كما يمكنك إرسال أسئلتك إلى mailto:public-forum@ankidroid.org[عنوان البريد الإلكتروني العام] والمخصص للمنتدى -إذا لم تكن تريد التسجيل في المنتدى. - -تقارير الأعطال وطلبات الميزات :: لتقارير الأخطاء وطلبات الميزات، الرجاء الاطلاع على القائمة الحالية للمشاكل المفتوحة في -https://github.com/ankidroid/Anki-Android/issues[متعقب أعطال أنكيدرويد]، -وإذا لم تكن هناك منشورات تخص مشكلتك، أنشئ واحدًا جديدًا مع توفير أكبر قدر ممكن من المعلومات. -لتقارير الأعطال، الرجاء تضمين «معلومات التصحيح» أيضًا باتباع الخطوات التالية: - -1. افتح قائمة التنقل بالنقر على الزر في أعلى يسار الشاشة -2. انقر «إعدادات» -3. انقر «خيارات متقدمة» -4. انقر «حول أنكيدرويد» في الأسفل -5. انقر زر «نسخ معلومات التصحيح» في الأسفل لنسخ المعلومات إلى الحافظة -6. إذا كنت تكتب تقرير العطل على هاتف محمول، الصق محتوى الحافظة في المنشور. -كبديل، تستطيع لصق محتوى الحافظة في بريد إلكتروني جديد، وإرساله إلى نفسك، ثم نسخه ولصقه -في تقرير العطل على حاسوبك. - -++++++++++ - -++++++++++ - -**ملاحظة:** إذا لم تكن قادرًا على فتح التطبيق أبدًا، وبالتالي لا يمكنك الوصول إلى الإعدادات، -الرجاء الاطلاع على https://github.com/ankidroid/Anki-Android/wiki/Unopenable-collections[هذه التعليمات]. - -إن معلومات التصحيح هذه مهمة لأنها تسمح لنا بمطابقة تقريرك مع معلومات تقارير الأعطال الداخلية عندنا. - -=== المساهمة في أنكيدرويد -إن أنكيدرويد مشروع مفتوح المصدر، والجميع مشجع على المساهمة (بما في ذلك غير المطورين)! -لمعلومات حول كيفية المساهمة، الرجاء الاطلاع على https://github.com/ankidroid/Anki-Android/wiki/Contributing[صفحة ويكي المساهمة]، -وطرح أي أسئلة إضافية في https://groups.google.com/forum/#!forum/anki-android[المنتدى الرئيسي]. diff --git a/help-ja.asc b/help-ja.asc deleted file mode 100644 index 5066a63..0000000 --- a/help-ja.asc +++ /dev/null @@ -1,40 +0,0 @@ -:docinfo1: -= AnkiDroid サポート -:sectanchors: - -[.text-right.big] -(link:help.html[English]) (link:help-ru.html[Русский]) (link:help-zh-CN.html[中文]) (link:help-ro.html[Română]) - -== お問い合わせの前に - -お問い合わせの前に、link:manual-ja.html[AnkiDroid マニュアル]、AnkiDroidプロジェクトのサイトに掲載されている https://github.com/ankidroid/Anki-Android/wiki/FAQ[FAQ(よくある質問)](英語)、そして http://wikiwiki.jp/rage2050/[PCソフト「Anki」のマニュアル]をお読みください。Ankiのマニュアルは、AnkiDroidを含むAnkiシステム全般の機能や特徴、注意点について知るのに役立ちます。 - -== サポート -お求めの情報が上記リンク先で見つからなかった場合は、下記の関連サイトをご覧ください。 - -AnkiDroidに限定されない問題に関するお問い合わせ :: AnkiDroid(AnkiのAndroidアプリ版)は、Ankiの作者 Damien Elmes 氏 が管理する他のバージョンのAnkiと異なり、有志グループによって独自に開発・管理されています。PCソフトAnki、Web版Anki(AnkiWeb)、iOSアプリ版Anki(AnkiMobile)等に関する問題や、AnkiDroidに限らずAnki全体に共通する問題については、「本家」であるAnkiの https://anki.tenderapp.com/[サポートページ] (英語)にお問い合わせください。 - -AnkiDroidに関するお問い合わせ :: AnkiDroidに関するお問い合わせは、 https://groups.google.com/forum/\#!forum/ankidroid-nihon[ユーザーフォーラム(日本語用)]に投稿するか、このフォーラムのmailto:ankidroid-nihon@googlegroups.com[アドレス]にメールしてください。(訳注:お問い合わせを英語で行う場合は、こちらの https://groups.google.com/forum/#!forum/anki-android[ユーザーフォーラム]に投稿するか、このフォーラムのmailto:public-forum@ankidroid.org[アドレス]にメールしてください。) - -バグレポートや新機能リクエスト :: バグ(不具合)の報告や新機能のリクエストを送りたい場合は、まず https://github.com/ankidroid/Anki-Android/issues[AnkiDroidイシュートラッカー](英語)に公開されているイシュー(課題)リストに同じ内容がないかどうか確認してみてください。 -ない場合は、新しいイシューを作成し、できるだけ詳しい情報を記載してください。 -バグ報告の場合は、下記の手順で「デバッグ情報」も記載してください。 - -1. 画面左上の「≡」の形のボタンをタップしてください。(ドロワーメニューが開きます。) -2. [設定]をタップしてください。 -3. [拡張機能]をタップしてください。 -4. [AnkiDroid について]をタップしてください。 -5. 画面下の[デバッグ情報をコピー]をタップしてください。(「デバッグ情報」がクリップボードにコピーされます。) -6. ご使用中のAnkiDroidが入っているモバイル端末(スマホやタブレットなど)上で -https://github.com/ankidroid/Anki-Android/issues[AnkiDroidイシュートラッカー]を開いてバグレポートを書き上げた場合は、クリップボードの内容をそのレポート文中に直接貼り付けてください。または、(訳注:モバイル端末でこうしたレポートを書き上げるのは大変だと思う方などは、)端末のメール機能でメールを新規作成し、その本文にクリップボードの内容を貼り付け、そのメールをあなた自身に送信してください。それから、PC上でそのメールを開いて本文の内容をコピーし、PC上で(訳注:上記の https://github.com/ankidroid/Anki-Android/issues[AnkiDroidイシュートラッカー]を開いて)書き上げたバグレポートの文中に貼り付けてください。 - -++++++++++ - -++++++++++ - -この「デバッグ情報」は重要です。これがあると、サポートチームはあなたが書いたバグレポートとあなたのAnkiDroidが送信したクラッシュレポートとを照らし合わせることができます。 - -== AnkiDroidへの貢献 -AnkiDroidはオープンソースプロジェクトです。このアプリの発展に貢献したいという方であればどなたでも(アプリ開発者でない方も)歓迎いたします。AnkiDroidへの貢献に関心を持たれた方は、最初にAnkiDroid公式サイトの https://github.com/ankidroid/Anki-Android/wiki/Contributing[“Contribution”](貢献)のページ(英語)をご覧の上、 https://groups.google.com/forum/#!forum/ankidroid-nihon[ユーザーフォーラム(日本語用)]にお問い合わせください。 - -(訳注:お問い合わせを英語で行う場合は、こちらの https://groups.google.com/forum/#!forum/anki-android[ユーザーフォーラム]にお問い合わせください。) diff --git a/help-ro.asc b/help-ro.asc deleted file mode 100644 index 802508d..0000000 --- a/help-ro.asc +++ /dev/null @@ -1,42 +0,0 @@ -:docinfo1: -= Ajutor pentru AnkiDroid -:sectanchors: - -[.text-right.big] -(link:help-ja.html[日本語]) (link:help-ru.html[Русский]) (link:help-zh-CN.html[中文]) (link:help-ro.html[Română]) - -== Înainte să întrebați - -Înainte să cereți ajutor, vă rugăm să căutați în link:manual.html[Manualul AnkiDroid], lista de https://github.com/ankidroid/Anki-Android/wiki/FAQ[Întrebări Frecvente], și de asemenea în https://docs.ankiweb.net/#/[Manualul Anki] -pentru ajutor legat de sistemul Anki, opțiunile acestuia și alte probleme care nu se limitează la Android. - -== Ajutor - -Dacă nu ați găsit ce căutați în documentația de mai sus, vă rugăm să vizitați legătură potrivită de mai jos: - -Probleme nespecifice Android :: AnkiDroid (aplicația Anki pentru Android) este creată și gestionată independent de alte aplicații Anki. Pentru aplicațiile PC / Web / iOS, și alte probleme generale Anki care nu se limitează la Android, vă rugăm să vizitați https://forums.ankiweb.net/[site-ul de ajutor Anki]. - -Întrebări legate de AnkiDroid :: Pentru ajutor și întrebări care privesc AnkiDroid, vă rugăm să vizitați https://groups.google.com/forum/#!forum/anki-android[forumul utilizatorilor], sau puteți trimite întrebările dumneavoastră -la mailto:public-forum@ankidroid.org[adresa publică de email] a forumului dacă nu doriți să vă înregistrați. - -Raportarea erorilor și cereri de îmbunătățire a aplicației :: Pentru raportarea erorilor si cereri de îmbunătățire a aplicației, vă rugăm să căutați în lista de probleme din https://github.com/ankidroid/Anki-Android/issues[monitorul de probleme AnkiDroid] și dacă nu există deja o discuție pentru problema semnalată, creați o nouă discuție furnizând cât mai multe informații posibil. -Pentru raportarea erorilor, vă rugăm să includeți și "informațiile de diagnosticare" care pot fi obținute urmând pașii de mai jos: - -1. Deschideți sertarul de navigație din aplicație apăsând pe butonul aflat în colțul din stânga sus al ecranului -2. Apăsați "setări" -3. Apăsați "avansat" -4. Apăsați "despre AnkiDroid" aflat în partea de jos a ecranului -5. Apăsați butonul "copie informații de diagnosticare" din partea de jos (asta copie "informații de diagnosticare" în memorie) -6. Dacă faceți raportarea erorii de pe dispozitivul mobil, atunci alipiți conținului anterior din memorie direct la discuție. Alternativ, puteți alipi conținutul anterior din memorie într-un email pe care să vi-l transmiteți și apoi să adăugați conținutul acelui email la discuție de pe calculatorul dumneavoastră. - -++++++++++ - -++++++++++ - -**Notă:** dacă nu puteți deschide aplicația și nu aveți acces la "setări" vă rugăm să urmați https://github.com/ankidroid/Anki-Android/wiki/Unopenable-collections[aceste instrucțiuni]. - -Aceste "informații de diagnosticare" sunt importante pentru că ne permit să facem legătura dintre raportarea dumneavoastră și unealta noastră internă care ne oferă date despre erorile din aplicație. - -=== Contribuie la AnkiDroid -AnkiDroid este o aplicație cu sursă deschisă si oricine este binevenit să contribuie (includem și pe cei care nu sunt dezvoltatori software)! Pentru ajutor legat de modul cum puteți contribui la AnkiDroid vă rugăm să citiți https://github.com/ankidroid/Anki-Android/wiki/Contributing[pagina pentru contribuții] și să puneți alte intrebări pe https://groups.google.com/forum/#!forum/anki-android[forumul principal]. - diff --git a/help-ru.asc b/help-ru.asc deleted file mode 100644 index 81ff0a3..0000000 --- a/help-ru.asc +++ /dev/null @@ -1,52 +0,0 @@ -:docinfo1: -= Поддержка AnkiDroid -:sectanchors: - - -[.text-right.big] -(link:help.html[English]) (link:help-ja.html[日本語]) (link:help-zh-CN.html[中文]) (link:help-ro.html[Română]) - - -== Перед обращением - - -Прежде, чем обратиться за помощью, ознакомьтесь, пожалуйста, с link:manual.html[Руководством по AnkiDroid (англ.)], с разделом https://github.com/ankidroid/Anki-Android/wiki/FAQ[Часто задаваемые вопросы (англ.)], а также с базовым https://docs.ankiweb.net/#/[Руководством по Anki (англ.)]. Там вы найдёте общий обзор Anki, описание функций Anki, и ответы на различные, не только связанные с Android, вопросы. - - -== Поддержка -Если найти ответ выше не удалось, обратитесь, пожалуйста, к соответствующему ресурсу: - - -Проблемы, не связанные с Android :: AnkiDroid (версия Anki для Android) разрабатывается независимо от других версий Anki. Для получения информации по PC / Web / iOS версиям, а также по общим проблемам Anki, смотрите https://anki.tenderapp.com/[основной сайт поддержки (англ.)]. - - -Вопросы по AnkiDroid :: Для вопросов и помощи по AnkiDroid, пожалуйста, посетите https://groups.google.com/forum/#!forum/anki-android[пользовательский форум]. Если вы предпочитаете не регистрироваться на форуме, можно вместо этого отправить свои вопросы mailto:public-forum@ankidroid.org[сюда]. - - -Есть идея? Нашли ошибку? :: Чтобы сообщить об ошибке или предложить нововведение, пожалуйста, обратитесь к https://github.com/ankidroid/Anki-Android/issues[списку открытых проблем (англ.)]. Если похожей темы нет, создайте новую с максимально подробным описанием. - - -В сообщение об ошибке важно включить “данные для отладки”, выполнив следующие шаги: - - -1. Откройте навигационную панель, нажав на кнопку в левом верхнем углу экрана -2. Выберите “Настройки" -3. Выберите "Расширенные" -4. Выберите "Об AnkiDroid" в самом низу списка -5. Нажмите на кнопку "Копировать данные для отладки" в самом низу экрана (помещает их в буфер обмена) -6. Если вы пишете сообщение об ошибке с телефона, просто вставьте его прямо в текст. Кроме того, вы можете отправить содержимое буфера обмена себе электронным письмом, и включить в сообщение с компьютера. - - -++++++++++ - -++++++++++ - - -**Примечание:** если открыть приложение и получить доступ к настройкам невозможно, пожалуйста, следуйте инструкциям https://github.com/ankidroid/Anki-Android/wiki/Unopenable-collections[по этой ссылке (англ.)]. - - -Информация об отладке очень важна: она позволит нам сопоставить ваше сообщение с нашим внутренним отчетом об ошибке и своевременно исправить проблему. - - -=== Как помочь AnkiDroid? -AnkiDroid - проект с открытым исходным кодом, и мы рады любой помощи (не обязательно даже уметь программировать)! Чтобы помочь AnkiDroid, ознакомьтесь, пожалуйста, с https://github.com/ankidroid/Anki-Android/wiki/Contributing[этой вики-страницей (англ.)], а с любыми возникшими вопросами обращайтесь на https://groups.google.com/forum/#!forum/anki-android[главный форум]. diff --git a/help-zh-CN.asc b/help-zh-CN.asc deleted file mode 100644 index dcec69e..0000000 --- a/help-zh-CN.asc +++ /dev/null @@ -1,37 +0,0 @@ -:docinfo1: -= AnkiDroid Support -:sectanchors: - -[.text-right.big] -(link:help.html[English]) (link:help-ja.html[日本語]) (link:help-ru.html[Русский]) (link:help-ro.html[Română]) - -== 提问之前 - -请求帮助之前, 请先试着先通过这个链接link:manual-zh-CN.html[AnkiDroid 手册]搜索类似问题,你也可以通过 https://github.com/ankidroid/Anki-Android/wiki/FAQ[常见问题解答]列表, 以及官方 link:http://ankisrs.net/docs/manual.html[Anki手册] 查找常见的Anki系统问题,这里的阐述的anki的特点不仅限于android,它适用于各种anki软件系统. - -== 支持 -如果你不能从上面提供的文档中找到你所需要的,请进入下面相关网站: - -非android特定问题 :: AnkiDroid (Anki的android版本) 不同于其他版本,被单独创建和管理的. Android版本不负责PC / Web / iOS 版本, 以及一般的 Anki 问题, 这些版本遇到的问题请参阅 https://anki.tenderapp.com/[Anki 支持网站]. - -AnkiDroid问题 :: 有关AnkiDroid的帮助和支持, 请参阅link:https://groups.google.com/forum/#!forum/anki-android[用户论坛](这是一个全英文网站),您也可以登陆 link:https://bbs.ankichina.net[Anki中国论坛]查询您的问题, 或者你不想再论坛上注册,你也可以将你的问题发送到这个论坛的 mailto:public-forum@ankidroid.org[公共邮箱] . - -Bug报告和功能要求 :: 对于Bug报告和功能要求,请在开放问题页面 https://github.com/ankidroid/Anki-Android/issues[AnkiDroid 问题追踪]中进行搜索, -如果你的问题在这个页面中不存在,可以创建一个新的问题,问题要尽可能描述清楚. -对于Bug报告,可以通过以下几个步骤将debug信息包含: - -1. 点击屏幕左上角的图标,进入导航抽屉 -2. 点击 "设置" -3. 点击 "高级" -4. 点击 底部的"关于 AnkiDroid" -5. 点击 底部的"拷贝 debug 信息" 按钮 (这样将会把debug信息拷贝到剪切板) -6. 如果你在移动设备上填写bug报告,则可以直接将这些内容粘贴到问题栏中,同样,你也可以你也可以将这些内容粘贴到你的一个新的邮件中,发送到你的电脑,再通过您的电脑发送bug报告给我们. - -++++++++++ - -++++++++++ - -"debug 信息" 对我们很重要,因为他可以让我们将你报告的问题和我们程序内部崩溃的数据联系起来. - -=== 对AnkiDroid进行贡献 -AnkiDroid是一个开源项目, 欢迎任何人参与贡献 (包括非开发人员)! 有意对AnkiDroid进行贡献, 请参阅 https://github.com/ankidroid/Anki-Android/wiki/Contributing[贡献维基页面], 你可以在 https://groups.google.com/forum/#!forum/anki-android[论坛]提出进一步的问题. diff --git a/help.asc b/help.asc deleted file mode 100644 index 7d9ba44..0000000 --- a/help.asc +++ /dev/null @@ -1,50 +0,0 @@ -:docinfo1: -= AnkiDroid Support -:sectanchors: - -[.text-right.big] -(link:help-ja.html[日本語]) (link:help-ru.html[Русский]) (link:help-zh-CN.html[中文]) - -== Before Asking - -Before asking for help, please try searching through the link:manual.html[AnkiDroid Manual], the list of https://github.com/ankidroid/Anki-Android/wiki/FAQ[Frequently Asked Questions], and also the main https://docs.ankiweb.net/#/[Anki Manual] for general help with the Anki system and features, and any issues not limited to Android. - -== Support -If you were unable to find what you needed in the documentation above, please visit the relevant site below: - -Non-Android-Specific Issues :: AnkiDroid (the Android version of Anki) is created and managed independently from other Anki versions. For the PC / Web / iOS versions, and general Anki issues that are not limited to Android, please visit the main https://forums.ankiweb.net/[Anki support site]. - -AnkiDroid Questions :: For questions and help concerning AnkiDroid, please visit the https://groups.google.com/forum/#!forum/anki-android[user forum], or you can send your questions to the forum's mailto:public-forum@ankidroid.org[public email address] if you don't want to register on the forum. - -Bug Reports and Feature Requests :: For bug reports and feature requests, please search through the current list of open issues on the https://github.com/ankidroid/Anki-Android/issues[AnkiDroid issue tracker], -and if there are no existing issues, create a new issue including as much information as possible. -For bug reports, please also include the output of "debug info" by following the steps below: - -=== AnkiDroid 2.16+ - -1. Open the navigation drawer by tapping the button on the top left of the screen -2. Tap "Settings" -3. Tap "About" -4. Tap the "Copy debug info" button at the bottom (which copies "debug info" to the clipboard) -5. If filling out the bug report on your mobile device, paste the contents of the clipboard directly to the issue. Alternatively, you can paste the contents of the clipboard into a new email, send it to yourself, then copy and paste that into the bug report from your computer. - - -=== AnkiDroid 2.15 and below - -1. Open the navigation drawer by tapping the button on the top left of the screen -2. Tap "Settings" -3. Tap "Advanced" -4. Tap "About AnkiDroid" at the bottom -5. Tap the "Copy debug info" button at the bottom (which copies "debug info" to the clipboard) -6. If filling out the bug report on your mobile device, paste the contents of the clipboard directly to the issue. Alternatively, you can paste the contents of the clipboard into a new email, send it to yourself, then copy and paste that into the bug report from your computer. - -++++++++++ - -++++++++++ - -**Note:** if you are unable to open the app at all, so cannot even access "settings" then please follow https://github.com/ankidroid/Anki-Android/wiki/Unopenable-collections[these instructions]. - -This "debug info" is important as it allows us to match your report with our internal crash report data. - -=== Contributing to AnkiDroid -AnkiDroid is an open source project, and anyone is welcome to contribute (including non-developers)! For help with contributing to AnkiDroid, please first check the https://github.com/ankidroid/Anki-Android/wiki/Contributing[contribution wiki page], and ask any further questions in the https://groups.google.com/forum/#!forum/anki-android[main forum]. diff --git a/icons/android-chrome-144x144.png b/icons/android-chrome-144x144.png deleted file mode 100644 index 77d1e363766355f52cacf9af1b7909e0cd7e6188..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12948 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 diff --git a/icons/android-chrome-36x36.png b/icons/android-chrome-36x36.png deleted file mode 100644 index 062143bcb5c00e99f517066a38c2f1c29de772c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2657 zcmV-n3ZC_eP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Ra3>OIm3)}6XegFUo0!c(cR9M5km|JXI#Tm!{ z-^|%PXOHdmEp|-eG*NLOG#8RU2x-!YR9tcqDsDld545FCX-lCO^?`~$fMif0s64cY zhp4DRs3I*%FL{89gdiYEql6?*h-G6;;+Vv7oOSl%J!kivGc#Ww)?Tj@m#!*cR;!(( zGduIsfBxS$p9ZM19XWCYT5I^ef1^_B9j$esl=>(Lf}f^RDJPrFRy);a)3Vtt(&=<-RzeD2h-l7H>Dkc-k=U8;SVCte%7l!Z7^p;NYM&Ha7P8 z!*q3ZfteA8;cu9kv!UV6cRb#-FV7#O)g)9l2!i{W8RyQO`@h!`)eKs{emwwyh`s~> znUHZQVDw}(o;+E^C!PTjB`wS9DijLK+uGW2=+L3h52(Jr9xuN5A`wv%0DKJ;6+;qm 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 HJH`DM&Z5N& diff --git a/icons/android-chrome-72x72.png b/icons/android-chrome-72x72.png deleted file mode 100644 index 612382f27680ac894c2883b6729a4e4f80d1c931..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5800 zcmZ{IcQ_o~`~E0lbz${YBYIiwW3g(8-Xn;X)q7htZ1gT_)L@YyQKOf<`Xbt@At8G7 z&P$@^yYHXBKYlaUnRCsV>p5rUI?r>@ecuTNdg>IU%%lJSP-tqX8sU14{~Cx0cQrX| zRL6CMPRhE<08pPwc8hp`yXUaeFwzBpS3Cd^9t{B3xS{YJ0Pu$bz}`y$kj(`E2JeCn zLpbgMk*&76D)9Hev$(S&6E{Nar>Uz(yh6@ELP)lFSn?VG=rlD|m7fJIELn#5J^R-F z_Yj3Gkjc!`5ohAzB+&@!jsfuLsSgPj@Ee*sJFVR=_Eer{Ei6`fcvx9`&AT=?H_y#| zd8IwySGzau*6V7FaM3P%xyeeX84g5n|I*DsIEo{&W5EZgzq!M|3WB)}Gp4WaBqTzP z8z)-BRzlDyB1Svez$1vOo7;c^UlS)=>hYYv{70AkQkR7vWM^!o1JUdLSZU)0CkA1}gU zv2Nq{->0ntmmbVWKBSEEa!MYkQF7+lHl;~^CnT+rSPC~cHQjc1acQ3$Wt3a!43P$u zOupGTMxH#6!+I?-Y;<=P`+WQA;;ALcyySb_`8#8#Lf>Y;ESW+|N~+}3r{OA>gHQ<{{N6#wls$=v0~ zUY`=QG6zJKz}k8CqzcI_>DX;e9c|RQc=vvJd6`Li$&a?hWAXA7UnAQ=BLmD44K`ow zXZDuCDj9WCVC!qdBL2Ef_q3rX4Z#fb^z^U0>*^+M+9yy)8xPX@*8qSWsG#5|eB^q< ztpvaN#0*jNinj}_D3VI$)@&ulkBGZGTGE~acxR7PCP+RBN11Q|!CSzT zhFpKX3PvaHaZatGYM#w*-RikCXx`|!_BH(xJ5@NLa(L~&cv=e&p!D+>6vnO!f>TV# z+;eMml6-km`ZgO32H!#%$)Af_wo%Ik9^Fpff*Ba1kSVB}%LES(j|ki+?)R^qnJ|vAf5)}}*mg0gqw7xN61zb=OO1kQV}hn3=1wI6dj7q8jdB>yN`tu~Q&}yk$#u zYT?$@Rx`BJ;xE+YXVnMs6GDsEWbF4%rK_Ic zD>OMy&G7b9^WBBEESr4oLK817cP4>@cyFV&yqU??*L;ili@Pc3f2X`*p*r*a@uhrU zmOQ(KMvYl1hbSUBs;LRruHR;Z*ki)1=2IU;^}dPZXi8#th)ho_chNI!(nr746z0?j z=5%w`k5KKMD)SCK4gyaI3t~diD9X70`o8^(`{n(MBK#gEyMedUMp`c6)Lf}V$EAGF zL*PZto~<`AVg&JG*#qu4*j(;++{S~rhdv^ zj7xvSHny-YU&`$^4`nK;5S`#7=Sq*1`%z&x8p0VGP)fVcGm>i}RH{*0OgPCnlm&ZY zhv~VIXHNO;>X2yL($N(0$EGH* zgM)*oibh$pm6MWw0Y&Xnwy5K~??4bi2Bix`6m5F?G&9jCuTRuCp3uNAWw|ZE`dhRs z_XBA0<484Q;xl143}LvOV-U3FJDV_*9qVaOXm{=Yd#bdRV`4jZ{4&3cW_d?%zbYZC zxF2}+1cNnN7~;EZrSP`ish?i!wipdjI9b{(Va34f9!d zS5q6<$z~4ueH1gX9VIl{YM?b*jj|GWQZX`psaP<_Q7G8Eg%1DlgM^S;gXS$>1-fV| zvBTp?Sq2*g=3PZ!VIgs}pXKYv=n zJ%6?}Be$_jFDxx@TZBe!MhS_5`=2En2C3%03ITq0?=rkX_^eK}TeUu>apnke$m%Ff2(aL5f;&$7zY^afgF zXI6pL6Fn0Xn38<>sPeY7nEgA(hH*!Ynl+}J^A8;N9*&%I`dF72b%6l^UEHJM*+S;x zzTqO4ZQ&Z+Tza`sgsTw!&A-2fGv_N>D70cb^qhK%L|7GTO{c(8%ITM1TpZ8eF|zkz z(!?BLLt``L%`Xe0|C*VR6OW76AaPJLe0FyB{qk_p10_>+Rb$a=d%iX9?CB{Y#LsWO z=_mWw1U#T`q$LRAe3D-_91;6DA?Kasf%^>g6zpS`xga#u;DY#0^QazO z=7DmX4<9Wv$G|F#N&Ix^IqR|CZd<`fFyFAoWbB2^r@9|=nNRwk($6swd!n~`J1P$x zobxYzwY5i&;cWW!u>Xapuq&qQ?YUw$PFVy51lR&$5VzPx1t`p$fADknP>+o)MFA*3 zeutpP{!awB|FW6V%G2KM4Jsu)+J6vM`43l%r41p!oa?uX-@g^*ebzBShK7b%sYJlQ z#wIoRe2Wu8xv~}T1x-g-BEZgY)l+Px z>gLRJ+}b|t0inT;oLg@-F8!h9gBzz61QALb5d_3%0ug4$#!>CaZ7wkB(mHNl2Er2Y z`5qi)SSRh5TjHU-WNZW5Y2-$^+=ttZB(j-Lv$>eHiUw%Z)PpbrjDxURLGWpe%a1QL z9kugK&CQ)hzU`lF2NG`q;TKIH95Yg*qoYgR#OJL>9_;?_^y#~ZOio%u)Mr^eH?oGj z(M|Uu$!aHStPJD!AJz7PtaIq#D>}6+bY-Q$MT*=}j{*1f-D_@|gn?4NW#_|HfbzH4 zZKa{Q2ejQ^$+(#OV~`^wHamcFXsm`I*~*L<&;rrt$fmEoD&D_FvoJHK{JDEQJ3C8G zkv6)CAI=m_ZE;&gCKh@V9a{_2CXjGe$jkT@Tp$uV$()p6j+r=jPNn zpz{o=9Fmcy=>P7&@kV+tn*8sWZI8eG8=-U%PY4K<5gc6@QS!mVN!&&}H;^r*dhnKK zutsPzKKJ?7GzPXUHX|uUQ+gT%Nl;xE+J-wG<{BuSWImv2(FuHMi-)%X;Tffq7jJd~ z_q}?m7wry@t)3%(+>|zm+kprPD61M!c z9x)f(IH%&-3KB>swRSFyr=r$^grR_KP`3uI52&ypdKcZx%KoI21q`@2& zUu?nqL(c#SuttK$@xj2qgG`qJyWgh@lsxK+u!TXc#Pahh4K0S}1=pW# zq%*{#R`ZfKie#*B*R#bfC}QThXIP{stjUa5xI!N=(S;9G^WXAhDOk|7XD*u z>XcY(_XgnO{P5N&zjMaE1V8fOs0r_=VCDER8H@z%2#|9!?U z6K>=#xyD?G=flO-B%F~PAS8~thTuwwHHluhFa9!$Xs3Oqphp0!(dcGc1v6q z-W3)W2Fev;4T6KOzT!1ZCy92&e>v`A!IkU)?no-o+m;1N?kxN2-yP5HmA^!szhIoI+|h5h7ZlI5z_dT{@26{(rHIbMQz3IR ztK{Jni=lIxjlSZ5(=|=*Mxbr^(kzZ|dBPyeHrCe5SjPU9`^#3U3g!0yU>v7=7+zRd zY@Timi3YY?T5xN=PzU*#4>6Jd8SI4yNPgl^z`+B%h%a-pozJJ_l_goc%zwMHtQ^E&Q@PwnM-jhzT>M*LP5E1r2YS68=gTv$H(DU&s;;&i}N&pIlsvO$5(&bA3 z9P@Oq3~)0c%tOET5nf*DtXd}To;qX>IcouLKXhxbKOKYV7f!R+QnMAL z0-yn1II@j6hb}}+5Y(qqHy;whL9L{#JHCU?Oi|@BFlkOeE_-;0Qj_3|H%Fg@PGdc6 z3wS5Y%-zj|>d|x1;7j=1CQ~$i>+9vDj*Ma@wXUT4@rO6sKr^Fj zc6!?AnU$6N^^lEiJtK&-1gx~{YhFsIz}tLanXKeyq&)EpqQE=QQHk$fus$e+CahCc zP80HfWkSo)$E;_Wvf*qB!ENtOBGaUi0#B!nC#{YVfz3yv2?qH#>WEOY28=H=y(|ya68% zc}L?}xUT$jwQaU;|yNPX52fF7W;9q=g;bE*)&<9g`6G>hMQBR=9NCdQ&~vL zm1k?nzj&o@OY7^W%$i+I!W?ZPG}0zY%Dc-^dPaSMg7)w)z7WT22qVcbS1&m_nn{7g zCVyA0&b7EpI)dPkl+vHic}Kh0LacZX;y9hR<{TGU_xxt2r>w%8xw@0Q+vcs- ze)hkrT|B@!zubY~E&e0Z&MX0v0{q@qdOF16hl41hSVRHNV+jm~ z7p>qZL!qdssMpC=D6uu_;#--LE8w645nnVXk9 z?*984=o!nCumkq?acP7D)gYH_s09^jP^;YCB_dlOa0$m^iY6ruUQe!$k$Uo<1M* z3g|VCDdi7s1fTvn-7sr%o?=Xplzx*(wA;bvBU|{nvca^J+T|>0IowJNyOzm!AM#0* z41$%>=BDX}p|1ZGj8IxVro`srz183biW!D2xmYVudZal@#UCimaS>opm$_B+g^XU< zZin^E%*^==j+DKxu6F;>%5K7(ne$3YH_9d7DlfH>KwK?B$M~JYFu_BrF+ogud(795 z94{FMhc&p*a#xPKeRn2HsE{{dq2bR=V#-|#3(l?GLK1YuIyIuPFjZ1GbRx-X3pVMI z?-+O zuTaiN+Tqkg1fAgXG#tsX`p+@zJR1>QEqFwqgo+cB1LY3~rMi+|{D!U6RaIpw%!Q>A z0Bhciot>TM6#dSd|Jiu8m3tHU`T0NDZxqe&Gl;p^LQj-S`9^*-+HFBs`4UTScW@qI z5zaNL>b_DWv+4?E!Z}M_xLv}x)0udXf?(9ey+RcQ1%+=&$j!Hvf6;Gnyl8S^VK3?F z`_%o8Wmmkd#L7z1i;D~4A6+Q9tJNr~TB$0T-M@Hcm+krj$gGDrpY^eynwg(H!p}k0 z&es9g0pd_GDPb{jVR4CPP#IaMq^y{jAXH2i3XS+0Xz>38czD^nI0pa!15UCg4sZdc zub!Ft86g5WynVeKUECcw{DQq5I9$B_>;NFBVB?G&{SB?9a*JoGzLk;=j?0cfh}sn)8z GjQl@#dFlcH diff --git a/icons/android-chrome-96x96.png b/icons/android-chrome-96x96.png deleted file mode 100644 index 493f6588557928520141184d781c38c784bbb504..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8115 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 Cuz6kp diff --git a/icons/apple-touch-icon-114x114.png b/icons/apple-touch-icon-114x114.png deleted file mode 100644 index 36c167e8a90d84b0daebcee748bc22cef2eba6da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6649 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 diff --git a/icons/apple-touch-icon-144x144.png b/icons/apple-touch-icon-144x144.png deleted file mode 100644 index c9a90fadc206df696672d8cfdabfd484977ca611..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8621 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�&Iy$=4-bsE^y{Mdw3^CWOSe3A7!aZY=oxI8!$FTw;I4PT*{IK#=Gpf}blRiar-*^~qp+xWM?D~1zQ@dW7N9GY5+ zidZyqw*dc(kB!yR(HWC`DuYUjCbZFEX!t3o@7_JK3QGWkgOnUOzRDF|mSt~5N>|y5 zlF4yn@w3~z(#@C+B8Tyqi6hn<#-veh;6bk>P*N}xAt524EvOC+-w@*9DD2sa4U2MMOv+OBk|lB4ogtH}xdDTieBL<$T`;)PYZy;qs^|+Z3G9O`# z7)L;0@AG)fx78=6{>~nCoHH<%NjzpC)&Xwvgpu(@umCHp_4gY`$0Hz&g%i<}>v8KS zl9eURrFSjp=G*ocR!a!+=A#vjz~HAMT#oTSQv1)cPL<>32RA@hYCy(Gnn9@Yn5VI- z8&<`^OC8hk26J;dmXh6OKt1q*(d+I8U@v1j+S+Vcyo#V$IOkY?_NkjF<&Mn(9MyrH z@KP$gRjM90nZ@8~V=EVGbb|*$QnIMRmknq#z&-Fa| zdU};Yr(ei%v0~zsx~*j7@9$&*6H4q2L8| zo6^l(_xEZ#T3T+HKdV~RYwvHOYm91}s;jFT8lG}aHgJ->MTt!@8GVAB{ zkOuw;q|}?_^1Y0P#+6xcPnHnM5K!cxSE$Go|@NyBHLWK{!VEq)Vc9>4yzrGeuXS#pG^%eSPw%a|xc9>eQ(3g{_waawnVI&%{cz39iC`jxy|@l?1DUZjGd8y6s-k zT8-A*DJv`6+U|Es{z~OdA8|GS%-#|5C;=iaBrI&+Fv~-Ya*46m#6F4DYDh868!*VF zeso*-^`B2tE4y@iP1bi>9tt759Y~rQ`co~FFTEke5o%?&j*iAFF26aA&ZR!(JO`)? zFlI|ji*?rLS-Sz=LRkuqrtuLq5suE+2~5z$5;cZ|4;9i6h9N!J2L9Gij?bx?<}!|C z2re!zK$oP>&}z~hntAc!MV_R`VNrs#gfHgL%1XXkS%Y4+GN$RVgo|Nrd_n)QptMx> zFR2TP^Kku)jYt3|@(TL<73}iVKzyEGOkx~f*4)r5mQ4bhYhz<0FO0>uE|O4=vIkHm zDA?6}F{=@Z@et=`1BId=CUr2lfu>^8!$)1Halzg(jmJNNoe$Vg)nYI@CYccD#zO0~ z$xMy*SXq!b-dBSKwJ=>0keQ_=Jz@Ct^mOqv>==|8t<)F^5z!NImyIqG87cQYEdkn3 zdes&UuT9Y?3Qcs${&BP+gCJDPM_5Rl@_>;k`JFlXF(?oedleRy|4TEyAXP@)$Vgg1 zV0>}$y#awSE3^w28w_Y1dH&bC?0LQu%gc^%x`z7tPqgK^Y*f@+>)ai9eEz{>S^y}D z3#qvvpA_z_BcI4Lph?pJ@i9QQ?*%nd3g_Zca=>(ERs_^4(5mkgl%B$e0AAW z@$zb3bkM1^wyc=sTm2A`M<0TY-3TnNMhb}+2Ea$d;@D-bwXj!OBZh>L~pH#RnCjD3^T_e;oz~?Nx%S8n z8`cDNW^pr{4#I-az#)Eb@R}+WbqT4QhK7c|e)jyq^pbAw8WMNODX6 zMLwW$q)Di1{kGhmVohKvjAT;cP;qrG?Bq)*6SJPKruEP2Aro%9uLdmk zZf1{9=4YKn^8Gl>bqtf<++Cu<(MCtXHr24dSlYX60E_P$oPSaG7Eb<#DIC*@|;y9V*BJA;x?U$5ZWtJzCLA&&WW)|^pXiF<9 zc0)*{$CC+?OOfEfL9tH4a1-2B^U!Bzu05HitvyUkfuUCU1Gz4ze(uvm#NP&O+~HW< zsMoLGsj~T?n#DQRR#Kh3c`#S`wSMCPqa)4WLXMFS+M<6cY#4;G&ajJ@{dXPs1ot;4 zGJ$%^2kol#9ouX2U6*ErpN?-*6te`rZvl2Sc4sANo#0Cyq+8Zbp2)8w16x6%D8Jk3 z$>N1l?xx*4Kl5HQ^}P!x`;fL54}IAcz#%UYvWZ*NjIo$m+7_5B@x=@Gmf%L>$DGM% zG&&`vp*4yS8?3_EObFj8w?ZT*LO|d(x|YMJ{dx}?dYbw|Zmf^H6}?i=OmkNsxo18w zy8Gp{l7eOYH^0_0I2%_bIW#nMnl;w%4+r?!%g!Wj|JP7ewv-WzNf#n()#7CNJ?l== zU^32>d|K^SX1d7o5wpC-q;I?d1yvOa!6nLJ@2fvH1hn_=;YV&8bX;)XP0KCM9ei;Y z%EB>8`M6@SpNhua3=4MsIc4335DKLteJBGr2&8C@IYZW~c@m!Xks2 ztge~?o%86Dn>Ae!TQ`~s8YQAU&L$4S!yi6-X*}eh2d6g8FN%B`;%p%>Lz79y#FUSw zU=M+^7sf+hD=1iVspoDB6Msh;L%ni!pvk4U6oP0oL?$Hijd_LQXAA!#u>tF^G`Qe5 zW|2v6Q%^jgf+8ZN&YK-)teUK2DQw?KGsm}E2i9@(i~2*(Ki{iYh^-sr7IFaCOiWCS zADln44}d$s@)jLLX$c2d_t_#|mZ@1o{LpR4;Lau!Tr%1Q{ z>KOZ-FM2GWdrC$2|5NJ)vPS?s2dZ|q(;q4-DgYIrVg5jwBxxL+H+H$?b7cMeuhRdX z-+OE_bcX{>`_ze>kCd8M92rU<9VatyCt9)B1MoGO+p|f49}>wZK>C~^qT=FSn}ccN z6A&O)?z#aX&tc)qKY72ryx$7W_8((A`BK3BZINPv&4-*eqzj}B36l?G#xBax9NhrP z;zkiI$~cY;3s=sL?@pF6`uqm^@}1kB{=EfK4xs(LJZhRh0EiCJ{~AzteEs@0=dMq} z6UhrehXBT_^Vg%O__QLbDqA+LT@Pf)!-DDw4kMK#ny4vBzw0v~nq{f)NkhLbIslcw z8;tWeBV%1%&k^AnxQGbwyg*V96V*l}7k~czxh&6LqJR|!==gG^sYWD}Sm|so))Gk> zv#eM<)+g%UZXdo9ZLF%=r)kIZARfNK4(UkDygRQA0Jt2WGSQ3Jl~+|&efU7g>NAR} zgeixFggCa}UgX{1Y=@pmy~!k34%}gpRC+ZK6nS4KvEDwdrmVHl0aEOIe9~E1V5`&x|WkO8zqnd(@ES7>PeDV|+M*0r{#uXR4`9QWGMq{KK z8&y#&J%LtIPS)}+uzNryXd}z^c<%y#(vNPj+FGTQXhht{^`)U z0e4qv1-Ir&(}vt2U!aD_)iAloVKVbFb#I0lDdqWR<)6s0ySrP`mMxF`N&y5Uc)W>5 z=W16(p7$OnmGW1i#6u+bJD_2s7baFBF|(F=|J`BM>7L@Fg(q&G;DL;4(c4$0rKO>o z(=cTTr0+!P4CP6_9;r7ron^DA~^SIXs^+e&IG+U>>(A2h{UIIslkaQ&mk%Pv=tYcq%R3 z7I1%Oe0PE#P~HCgK@Ql(fxf0A2gz&L&eVJZG;Uz4MJ5_eGxu0U`Y(`|E_-die`-0( z13NXpGRY)s#%JYua8-xT`~TkO@oy&x=H9MHaGc*>G91{)!s;fk>t^=W&0NCN#T+<* zgaibIc?E@dg`R2&h)W2-B?JYy1q3Ao1lZesH~v2z>>bUlExi8k9kkcFb%72#-dehD znr}UroLn3&tnJL1+`OF3nXH}MOhF*eob?kzTxV?#j=>j0!^)eQpa(1je5M2xEEK2| z$_Ero$Uu0P*#njaEvBJgQ~lk;-H`4_LxD>9Dtw?l8Zx&Ngm4=07a(PMHDnFqP4NE# DIX!Tx diff --git a/icons/apple-touch-icon-180x180.png b/icons/apple-touch-icon-180x180.png deleted file mode 100644 index c140d1ac74e1a2506c52077856e6fc79dbeb4d60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10984 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 kyN9~Dx~T?HumXK?U8`yYa(O+1LcLgg8%>k diff --git a/icons/apple-touch-icon-76x76.png b/icons/apple-touch-icon-76x76.png deleted file mode 100644 index c3deffbbd18b450900ffe1073968a6ecc08f7409..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4330 zcmZ`+XIK+muwHr#9R;NK2m(Pmf&rw2&`W57sMJ8D6RI?^g__WtC`vCvlwPEn(2I1D zq700@Erz{Y(5P|E@UPT#y{ zb9K@S>W7B68NAJLxUQgwUc>^vi-y_OvuBix0 z_-!2w2c9lh%S9s9h4U%}`GEo@FG^l1mGEa4om<~B_pg+w@%K$jMfm`;`pcmk*$$!= z-sX;vqfYX|FG@`2#p5|;pY4XfjoKnR2Tmzgm{X#{QqDp14S2l&?n0Z_R3)pfpRe!l z^V0(flf01MOPvB#IH?;q@{V(@ZEQXrfA!)~La|VGKCD&AA8u}Lz9MB!`J{7r*hDAd zhfsjO|Gm)Fbk~6lZc{dG2bt*{MK4hUPcJX$1dZ90yA9rt*RtKgeC~B~sQMzqOv1z3 zjEoE-asu zxS?SI43rB7TlO4%jw0P|Y9y_xI%F=%}ut!E{dw zkH>%W4mLN(5|{l{coS+h1xFVa7N)0_vF9f8?>;{qOLC>Yc?U)=3P%F2k-)l6o7^_lT;`MyUC^zZx6esUefyZxd2sh6iu4sRiI0b$ z|CJxCWxkqE3bcASSj@#r*Kt3uZGl&MnC<6^Z{MY3d&FrB1r3wH?X82;kIC%XI_8z7 zrKRuRJJqA?jExiLwx>8|W>k`-WMmc^d)M9&E zZSCGfnWa2KpI;tRpXP(>B8Aip04>K7>iyx__E?mi@S3gVSY31T*`$q=Yl1mE@q~Mh zMNo3NJMJ1TD;>9wTIgp5YV4~jY~H`JgTc$XzmGQKF!aLYEJlephO%QdLZLFgD+L=* zQ4C{i9&D|RvCP8#RnZeGrr)^XhdOCBJt$t)=GnF;(WACPum#+h)k954HAx;5Ze(2D z2lAmZ3Y7&Qam+iPyKaVuV$CFzMhGm=er)VMORu>2vwESknWDgADV9z~PNu0-lDK9Y zB*d${TVMjKnDm_JOG&`zU@A(NwaSwXOwQ|Mr}oV*24<5Ib*Hpx+?O?VU-VW=6)rHr zl&Oo>gv#VAUs-tr3U%7N&4oZvnj}}e4k(Oak73iKj56BhL9mdK(UAjez$*{-)QgC)DXV8u z_r$y<$KGlN{3iz>Z3}oo*v55Z33gDVG7eJ})~eM_KB+SPoH82s@q1m=8Pz)b3)Hq#@K@1F0ZOm)Vo|n4_t7G zK*Se3q7-)TjKht2%uNLnj;Sf{(?YYQx3Vi}n%=y5bFvr}g{nTt7o^fEt*V;;h#YSY z+U)P|H~N7NHB*g*Vh4MN_Ne9CY(8X+xdSzE5*exKOò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

- -[[AnkiDesktop]] -== استخدام أنكي للحاسوب مع أنكيدرويد -لأنكي خدمة مزامنة مجانية تدعى أنكي ويب تجعل من السهل مزامنة رزمك بين جهازك المحمول وحاسوبك. -إذا لم تكن قادرًا على استخدام المزامنة لسبب ما، من الممكن أيضًا استخدام فلاش USB، لكن هذه الطريقة مضنية أكثر. - -لاحظ أن أنكيدرويد ليس مرتبطًا بأنكي الحاسوب أو أنكي ويب. أنكيدرويد مبني على أنكي الحاسوب -لكنه مطور من قبل مجموعة منفصلة تمامًا من المتطوعين. - -++++++++++ - -++++++++++ - -=== عبر مزامنة السحابة -قبل أن تستطيع استخدام أنكي ويب، عليك إنشاء حساب من خلال زيارة https://ankiweb.net -والضغط على زر *Sign Up*. تستطيع تخطي هذه الخطوة إذا استخدمت أنكي ويب من قبل. -بعد إنشاء حساب، انظر التعليمات في الأسفل اعتمادًا على ما إذا كنت تريد جلب رزمك الموجودة إلى أنكيدرويد، -أو خارج أنكيدرويد. - -==== مزامنة الرزم الموجودة إلى تنصيب أنكيدرويد جديد -في هذا السيناريو، لديك رزم موجودة تريد نسخها إلى تنصيب جديد من أنكيدرويد بالمزامنة مع أنكي ويب. -افتح نسخة أنكي التي فيها رزمك (تكون هذه عادة نسخة الحاسوب، لكنها قد تكون نسخة أنكيدرويد كنت تستخدمها في جهاز آخر)، -وانقر زر مزامنة (له سهمان في دائرة) في أعلى اليمين من قائمة الرزم. - -إذا لم تستخدم أنكي ويب من قبل، فستحتاج إلى إدخال بياناتك إذا طُلبت منك، ثم الضغط على -«رفع إلى أنكي ويب» لتأكيد استبدال المجموعة الخالية في أنكي ويب برزمك الموجودة في أنكي. -سيرفع أنكي كل البطاقات، والصور، والملفات الصوتية إلى أنكي ويب. قد يستغرق هذا بعض الوقت إذا كان لديك كثير من الوسائط. - -حالما تنتهي المزامنة، افتح أنكيدرويد في الجهاز الذي تريد نسخ الرزم إليه،وانقر زر «مزامنة» -في شريط التطبيق في أعلى <>. -بعد إدخال بيانات أنكي ويب، سينزل أنكيدرويد كل بطاقاتك والوسائط، ويتذكر معلومات الدخول للمرات القادمة. - -لاحظ أنه إذا كان لديك مواد في أنكيدرويد قبل محاولة المزامنة، فقد تظهر لك رسالة تسألك أن تختار إما -التنزيل من أنكي ويب، أو الرفع إلى أنكي ويب. إذا لم يكن هناك بأس في خسران البطاقات في أنكيدرويد، -فاضغط *تنزيل*. إذا كنت تريد دمج البطاقات الموجودة مع أنكيدرويد، فانظر قسم -<> قبل الاستمرار. - -بعد اكتمال المزامنة الأولى، تستطيع ضغظ زر المزامنة وقتما أردت مزامنة التغييرات إلى السحابة. -يتم إرسال التغييرات المجراة منذ آخر مزامنة فقط، لذلك فعمليات المزامنة التالية أسرع بكثير. - -إذا أضفت بعض البطاقات الجديدة في نسخة الحاسوب وتريد مزامنتها إلى أنكيدرويد، -فستعيد العملية نفسها: زامن على الحاسوب (أو أغلق البرنامج، لأنه يزامن تلقائيًا -عند الإغلاق بشكل افتراضي)، ثم انقر زر مزامنة في أنكيدرويد. - -==== المزامنة من أنكيدرويد إلى الحاسوب -عملية المزامنة من أنكيدرويد إلى الحاسوب هي جوهريًا مثل المزامنة من حاسوب إلى أنكيدرويد، لكن بشكل معكوس. - -من خلال <>، انقر زر «مزامنة» في أعلى اليمين (له سهمان في دائرة). -إذا كنت تستخدم أنكي ويب للمرة الأولى، فقد تحتاج إلى إدخال معلومات دخولك، ثم ضغظ زر «رفع» -لرفع مجموعة أنكيدرويد إلى أنكي ويب. - -بعد اكتمال المزامنة، افتح أنكي على حاسوبك واضغط زر مزامنة لتنزيل مجموعتك. - -[[AnkiWebConflicts]] -==== التعامل مع تعارضات الدمج في أنكي ويب -مع أن هذا لا يجب أن يحصل غالبًا، فقد يحصل أحيانًا أن تصبح بطاقاتك في أنكيدرويد -غير قابلة للدمج التلقائي مع البطاقات في أنكي ويب. في هذه الحالة، من الضروري الاختيار -فيما بين التحميل من أنكي ويب أو الرفع إليه، وهذا يستبدل مجموعة في طرف من الاثنين. - -إذا كان لديك بطاقات في كلا الجانبين تريد الاحتفاظ بها، تستطيع <> -لكل رزمة تحتوي بطاقات جديدة من أنكيدرويد، ثم عند المزامنة، الضغط على «تنزيل» للتنزيل من أنكي ويب. -بعد اكتمال المزامنة، تستطيع استيراد الرزم التي صدرتها مسبقًا من أنكيدرويد، -كما هو مشروح في قسم <>. - -=== عبر USB - -إذا لم يمكن لديك اتصال إنترنت منتظم، فمن الممكن نسخ الرزم بين أجهزتك باستخدام USB. - -تعمل طريقة USB باستيراد كل الرزم دفعة واحدة أو تصديرها. يعني هذا أنه عكس طريقة أنكي ويب، -لا تستطيع إجراء تغييرات في جانبين في الوقت نفسه ودمج هذه التغييرات. بدلًا من ذلك، -إذا أردت إضافة بطاقات في الحاسوب، فعليك التأكد من تصدير الإصدار الأخير من -مجموعتك في هاتفك المحمول أولًا، أو قد تخسر المراجعات المجراة على الهاتف. - -لذلك فالخطوات التي ستتبعها عادة هي تصدير مجموعتك من الهاتف واستيرادها إلى الحاسوب، -ثم إجراء تغييرات في الحاسوب وتصدير المجموعة واستيرادها إلى الهاتف. - -لا يدعم أنكيدرويد استيراد الملفات النصية مباشرة. إذا كنت تريد ذلك، فعليك فعله من خلال الحاسوب، -ثم استيراد مجموعتك إلى أنكيدرويد. - -==== نسخ كل الرزم من أنكي الحاسوب إلى أنكيدرويد بواسطة USB - -على حاسوبك: - - . افتح برنامج الحاسوب - . اختر عنصر القائمة ملف>تصدير. - . اضغظ زر «تصدير...». تأكد من إبقاء خيار «كل الرزم» محددًا، لأنه لا يمكن استيراد - رزم فردية إلى أنكيدرويد. يجب أن يكون خيار «تضمين معلومات الجدولة» محددًا أيضًا. - . سينشئ أنكي ملف collection.apkg تلقائيًا على حاسوبك. إذا كان للملف اسم مختلف، - انظر الخطوة السابقة مجددًا. - . صل جهاز الأندرويد بحاسوبك بكبل USB. - . افتح مستعرض الملفات في حاسوبك وعاين محتويات الهاتف. - . اعثر على مجلد AnkiDroid. - . اسحب ملف collection.apkg من حاسوبك إلى هذا المجلد. - -ثم في أنكيدرويد: - - . اضغظ «استيراد ملف» من القائمة في شاشة الرزم الرئيسية. - . انقر «مجموعة» ثم تأكيد - -بعد الانتهاء، تُستبدل الرزم في هاتفك بالرزم في حاسوبك. انظر قسم <> -لمزيد من المعلومات حول الاستيراد. - -==== نسخ كل الرزم من أنكيدرويد إلى أنكي الحاسوب بواسطة USB - -عملية نقل الرزم من أنكيدرويد إلى الحاسوب هي مثل الخطوات في الأعلى، لكن بشكل معكوس. - - . افصل جهازك من الـ USB. - . اختر «تصدير المجموعة» من القائمة الرئيسية في شاشة الرزم. - . تأكد من تحديد «تضمين معلومات الجدولة» ثم اضغط *موافق*. - . صل الجهاز إلى الحاسوب بواسطة USB. - . انسخ ملف collection.apkg من المسار الموصوف في الرسالة إلى حاسوبك. - . اضغط ضغطة مزدوجة على الملف لاستيراده إلى أنكي الحاسوب. - -انظر قسم <> في الأسفل لتفاصيل أكثر حول التصدير من أنكيدرويد. - -[[importing]] -== استيراد ملفات أنكي -تستطيع استيراد ملفات أنكي (بصيغة .apkg) مباشرة إلى أنكيدرويد. لا يمكن استيراد الصيغ الأخرى -مباشرة، لكن يمكن استيراد أغلب صيغ البطاقات الخاصة بالتطبيقات الأخرى على تسخة الحاسوب، -والتي تستطيع بعدها <>. -انظر قسم https://docs.ankiweb.net/#/importing?id=importing[التصدير في دليل الحاسوب] للمساعدة حول الاستيراد إلى أنكي الحاسوب. - -كما في نسخة الحاسوب، يميّز أنكيدرويد بين https://docs.ankiweb.net/#/exporting?id=exporting[نوعين من ملفات .apkg] -(«حزمة مجموعة» و «حزمة رزمة») بناءً على اسم الملف. لجزم المجموعات اسم "collection.colpkg"، -وعند استيرداها _تستبدل كل المحتوى_ الموجود في أنكيدرويد كليًا. أي ملف apkg لا ينتهي اسمه بـ ".colpkg" -يُعامل كحزمة رزمة، والتي _تُدمج مع أي محتوى موجود_ عند استيرادها إلى أنكيدرويد. - -تستطيع استيراد ملفات مجموعة أنكي .apkg إلى أنكيدرويد، إما بفتحها من خلال نظام أندرويد بالشكل المعتاد، -أو باستيرادها من داخل أنكيدرويد: - -=== فتح الملف بواسطة أندرويد -تُربَط ملفات Apkg تلقائيًا مع أنكيدرويد. على سبيل المثال، إذا فتحت ملف .apkg محلق مع بريد إلكتروني -أرسلته إلى نفسك، فسيفتح أنكيدريد هذا الملف تلقائيًأ ويسألك عما إذا كنت تريد استيراده. اضغظ موافق لاستيراد الملف. - -=== استيراد الملف يدويًا في أنكيدرويد -تستطيع استيراد ملفات .apkg يدويًا كالتالي: - - * اربط جهازك بالحاسوب بواسطة USB. - * انسخ ملف .apkg من حاسوبك إلى مجلد أنكيدرويد على هاتفك. - * افتح أنكيدرويد في هاتفك. - * اختر «تصدير» من القائمة الرئيسية في شاشة قائمة الرزم. - * اختر ملف apkg الذي نسخته إلى جهازك عندما يطلب منك ذلك. - * انقر موافق - -== استيراد قواعد بيانات أنكي (.anki2) - -لا يدعم أنكيدرويد استيراد ملفات قاعدة بيانات أنكي (`.anki2`) مباشرة. -استيراد قاعدة بيانات يستبدل مجموعتك بمحتوى الملف. إذا كنت تريد إجراء استبدال كامل، -فعليك استيراد ملف `collection[.apkg/.colpkg]` منشأ في التطبيق باستخدام ميزة التصدير. - -=== استيراد ملفات anki2 يدويًا - -هذا غير مدعوم رسميًا، لكن يمكن استيراد ملفات anki2 يدويًا عند الحاجة، في حالات الكشف عن المشاكل مثلًا: - -* أنشئ مجلدًا جديدًا على نظام ملفات أندرويد -* احصل على المسار الكامل للمجلد كما هو موفر من قبل مدير الملفات، يظهر هذا كـ: `/storage/emulated/0/<اسم_المجلد>` -* ضع ملف `.anki2` في المجلد الجديد -* أعد تسمية الملف إلى `collection.anki2` -* (إذا كان هذا صالحًا في حالتك) سجل الخروج من حساب أنكي ويب مؤقتًا: `إعدادات - أنكيدرويد - حساب أنكي ويب` -* افتح `إعدادات - خيارات متقدمة - مجلد أنكيدرويد` واضبط مجلد أنكيدرويد إلى المجلد الجديد. - -[[exporting]] -== تصدير ملفات أنكي -يستطيع أنكيدرويد تصدير البطاقات بصيغة .apkg بحيث يمكنك استيرادها إلى أنكي الحاسوب، أو مشاركتها مع الآخرين. -كما في نسخة الحاسوب، تستطيع إما تصدير https://docs.ankiweb.net/#/exporting?id=packaged-decks[حزمة مجموعة أو حزمة رزمة]، اعتمادًا على ما تريد فعله. - -يتوفر خيارا استيراد اثنان: «تضمين معلومات الجدولة» و «تضمين الوسائط». الخيارات الافتراضية كافية عمومًا. -إذا اخترت عدم تضمين ملفات معلومات الجدولة، فسيفترض أنكي أنك تريد مشاركة الرزمة مع أناس آخرين، وسيحذف -وسوم marked و leech لكي يحصل الآخرين على نسخة نظيفة. - -=== تصدير رزمة مجموعة -عند الاستيراد للاستخدام في أنكي الحاسوب، فقد تريد عمومًا -https://docs.ankiweb.net/#/exporting?id=collection-colpkg[استيراد المجموعة كاملة]، مع تضمين سجل المراجعة وكل شيء. - -من القائمة الرئيسية في شاشة الرزم: - - . انقر عنصر القائمة *تصدير* - . انقر *موافق* مع لاستخدام الخيارات الافتراضية - . انقر *موافق* مجددًا لإرسال الرزمة المصدرة ببريد إلكتروني إلى نفسك، أو كبديل، تستطيع نسخها يدويًا - إلى حاسوبك باستخدام USB - -لاستيراد الملف إلى حاسوبك: - - . احفظ ملف "collection.apkg" إلى سطح المكتب - . انقر نقرًا مزدوجًا على الملف لفتحه في أنكي - . أكّد أنك تريد استبدال المجموعة الحالية بالملف المصدر من هاتفك - . بعد الاستيراد، تستطيع حذف ملف apkg إذا أردت - -=== تصدير حزمة رزمة -إذا أردت مشاركة رزمة في أنكيدرويد مع مستخدم آخر، تستطيع تصدير حزمة رزمة. - -من القائمة الرئيسية في شاشة الرزم: - - . انقر نقرًا مطولًا على الرزمة التي تريد تصديرها - . انقر *تصدير* - . انقر *موافق* لاستخدام الخيارات الافتراضية - . انقر *موافق* مجددًا لإرسال ملف apkg المصدر عبر البريد الإلكتروني إلى مستخدم آخر - - -[[backups]] -== نسخ احتياطية تلقائية - -ينشئ أنكيدرويد نسخًا احتياطية لمجموعتك تلقائيًا. تتضمن هذه النسخ كل البطاقات والإحصائيات، ما عدا الوسائط من صور وملفات صوتية. - -يجري النسخ الاحتياطي في الخلفية عندما تبدأ التطبيق. تُؤخذ نسخة احتياطية فقط إذا مرت أكثر من 5 ساعات -منذ آخر نسخة. يخزن أنكيدرويد 8 نسخ احتياطية بشكل افتراضي، لكن يمكن تغيير هذا العدد من الإعدادات الرئيسية. - -تستطيع استرجاع نسخة احتياطية بالضغط على خيار *استعادة من نسخة احتياطية* من القائمة الرئيسية -في <>. - -[[settings]] -== التفضيلات - -يمكن فتح شاشة التفضيلات بفتح قائمة التنقل واختيار «إعدادات». يسمح لك هذا بتخصيص عدة إعدادات ومظهر أنكيدرويد. - -تقسم شاشة التفضيلات إلى أقسام مختلفة، وهي مشروحة في الأسفل. - -=== أنكيدرويد -هذه إعدادات عامة تؤثر بكل التطبيق: - -حساب أنكي ويب:: يغير الحساب المستخدم للمزامنة مع السحابة. لمزيد من المعلومات حول المزامنة، -انظر <>. - -جلب الوسائط أثناء المزامنة:: يزامن أنكيدرويد الأصوات والصور بالإضافة إلى البطاقات وسجل المراجعات بشكل افتراضي. -إذا ألغيت تفعيل هذا الخيار، فلن يتم تنزيل الوسائط أو رفعها إلى خادم المزامنة من قبل أنكيدرويد. - -مزامنة تلقائية:: فعل هذا الخيار إذا كنت تريد أن يزامن أنكيدرويد عند فتح التطبيق وإغلاقه. -هناك حد عشر دقائق لهذا السلوك. تستطيع إيقاف المزامنة بعد بدئها بالضغط على زر الرجوع الخاص بهاتفك، -لكن قد يأخذ إلغاء المزامنة بعض الوقت. - -+ -قد يرغب المستخدمون الذي يريدون تحكمًا كاملًا بوقت المزامنة في استخدام تطبيق طرف ثالث لأتمتة المزامنة. -انظر https://github.com/ankidroid/Anki-Android/wiki/AnkiDroid-API#sync-intent[وثائق الواجهة البرمجية] لمزيد من المعلومات حول هذا. - -رزمة البطاقات الجديدة:: يعني الخيار الافتراضي «استخدام الرزمة الحالية» أن أنكي يحفظ نوع الملحوظة المستخدم مؤخرًا -لكل رزمة ويحدده مجددًا عند اختيارك القادم للرزمة (كما سيبدأ مع تحديد الرزمة الحالية عند اختيار إضافة من أي مكان). -الخيار الآخر، «تقرير حسب نوع الملحوظة»، يحفظ الرزمة المستخدمة مؤخرًا لكل نوع ملحوظة -(ويفتح شاشة الإضافة مع تحديد نوع الملحوظة الأخير عند اختيار إضافة). قد يكون هذا أكثر ملائمة إذا كنت -تستخدم نوع ملحوظة واحدًا لكل رزمة. - -اللغة:: تغيير اللغة. ملاحظة: ترجمات أنكيدرويد مساهمة من قبل متطوعين. إذا وجدت ترجمات ناقصة أو خاطئة، -فلا تتردد بالمساهمة في ترجمة المشروع. -انظر https://github.com/ankidroid/Anki-Android/wiki/Contributing#translate-ankidroid[ويكي أنكيدرويد] لمزيد من التفاصيل. - -نمط الإبلاغ عن الأخطاء:: يتحكم فيما إذا كان أنكيدرويد يطلب إذنك قبل إرسال تقارير الأخطاء -إلى نظام تقارير الأخطاء الخاص بنا عندما يحدث خطأ في أنكيدرويد. -تستطيع إيقاف ميزة إرسال التقارير كليًا إذا أردت. - -==== التنبيهات -يسمح لك هذا القسم بضبط كيفية ووقت إظهار أنكيدرويد للتنبيهات في شريط تنبيهات أنكيدرويد. - -نبّهني عند :: *لا تنبه مطلقاً* يوقف كل التنبيهات. *توفُّر الرسائل المعلقة* يظهر فقط تحديثات الحالة المهمة -مثل اكتمال المزامنة. *أكثر من س بطاقة مستحقة* يظهر تنبيهًا عندما يكون لديك أكثر من س بطاقة مستحقة -(يتطلب تفعيل عنصر الواجهة، الـ"widget"). - -اهتزاز:: يجعل هاتفك يهتز عند إظهار تنبيه. - -وميض الضوء:: يجعل ضوء هاتفك يومض عندما يكون هناك تنبيه غير مقروء (إذا كان لهاتفك ضوء تنبيهات) - - -=== المراجعة - -تسمح لك شاشة المراجعة بتخصيص كيفية عمل أنكيدرويد عند مراجعة البطاقات. لاحظ أن هذه الشاشة -تظهر إعدادات المراجعة التي تنطبق على *كل الرزم* فقط. هناك مزيد من الإعدادات *الخاصة بكل رزمة*. -يمكن إيجاد الإعدادات الخاصة في *خيارات الرزمة*. - -موضع البطاقات الجديدة :: يتحكم بوقت إظهار البطاقات الجديدة: إما مختلطة مع المراجعات، -أو بعدها، أو قبلها. - -بداية اليوم التالي :: يتحكم بوقت بدء إظهار بطاقات اليوم التالي. -يضمن الإعداد الافتراضي (4 صباحًا) أنه إذا كنت تدرس في منتصف الليل، فلن تُعرض لك بطاقات يومين اثنين في جلسة واحدة. إذا كنت تسهر حتى وقت متأخر جدًا أو تستيقظ مبكرًا، فقد ترغب في ضبط هذا الخيار إلى الوقت الذي تنام فيه. - -حد التعلم المبكر :: يتحكم بسلوك أنكيدرويد عندما لا يتبقى شيء لتدرسه في الرزمة الحالية إلا بطاقات التعلم. -الإعداد الافتراضي (20 دقيقة) يجعل أنكيدرويد يظهر البطاقات مبكرًا إذا كان موعد استحقاقها بعد أقل من 20 دقيقة -وليس هناك شيء آخر لتدرسه. إذا ضبطت هذا الخيار إلى 0، فسينتظر أنكيدرويد المدة كاملة دائمًا، -ويظهر شاشة التهنئة حتى تصبح البطاقات المتبقية جاهزة للمراجعة. - -مهلة مربع الوقت: تقنية تقسيم المهام (Timeboxing) هي تقنية تساعدك على التركيز بتقسيم نشاط طويل -(مثل جلسة دراسة مدتها 30 دقيقة) إلى جلسات أصغر. إذا ضبطت هذا الخيار إلى عدد من الدقائق غير الصفر، -فسيظهر أنكيدرويد عدد البطاقات التي درستها خلال المدة المحددة بشكل دوري. - -==== العرض -يتعلق هذا القسم بطريقة عرض البطاقات عند المراجعة. - -إبقاء الشاشة مضيئة :: يتجاهل إعداد مهلة إطفاء الشاشة التلقائي لأندرويد ويبقى الشاشة مضيئة دومًا. - -وضع ملء الشاشة :: يحولك إلى وضع ملء الشاشة لكي تستطيع الاستفادة من مساحة أكبر من الشاشة. -تستطيع تفعيل خيار «إخفاء أشرطة النظام»، والذي يخفي شريط حالة النظام، وشريط التطبيق، وأزرار التنقل السفلى. -كبديل، تستطيع تفعيل خيار «إخفاء أشرطة النظام وأزرار الإجابة»، والذي يخفي كل شيء ما عدا محتوى البطاقة. -تستطيع الخروج مؤقتًا من وضع ملء الشاشة بالسحب للأعلى أو الأسفل من أشرطة النظام. - -+ -لاحظ أن وضع ملء الشاشة مدعوم في أندرويد 4.4 وما فوق فقط. - -محاذاة للوسط :: يحاول أنكيدرويد إظهار البطاقات كما تظهر في الحاسوب بشكل افتراضي. -لكن إذا كنت تفضل محاذاة بطاقاتك إلى الوسط عموديًا في أنكيدرويد، فبإمكانك تفعيل هذا الخيار. - -إظهار وقت الأزرار :: تُظِهر أزرار الإجابة الوقت القادم لإظهار البطاقة بشكل افتراضي. -إذا ألغيت تفعيل هذا الخيار، فلن تظهر الأوقات، وستظهر فقط عبارات «مجددًا»، و«صعب» و«جيد»، و«سهل». - -تكبير البطاقة :: يتحكم بمستوى تكبير محتوى البطاقة (باستثناء الصور). -تستطيع استخدام هذا الخيار إذا كنت تريد تغيير حجم الخط لكل البطاقات. - -تكبير الصور :: يتحكم بمستوى تكبير الصور المضمنة في البطاقات. - -حجم زر الإجابة :: إذا كنت تجد صعوبة في ضغط زر الإجابة، فبإمكانك استخدام هذا الخيار -لجعله أكبر. - -إظهار المتبقي :: أوقف هذا الخيار لإخفاء عدد البطاقات في أعلى يسار الشاشة. - -==== السبورة -يتعلق هذا القسم بضبط السبورة في شاشة المراجعة. -ملاحظة: يجب تفعيل السبورة لكل رزمة بشكل منفصل من القائمة في شاشة الدراسة. - -عرض الخط :: يضبط حجم خط السبورة. قد يسمح لك تصغير حجم الخط بالرسم بتفصيل أكثر. - -خط أسود :: يستخدم خطًا أسودًا، ما قد يقلل من استخدام الذاكرة. ملاحظة: لا ينطبق هذا الخيار -عند تفعيل الوضع الليلي. - -==== إظهار الجواب تلقائيًا -تسمح لك هذه الميزة بإظهار الجواب تلقائيًا بعد مدة محددة. تستطيع أيضًا إظهار السؤال -التالي تلقائيًا؛ يُفترض أنك فشلت في تذكر البطاقة في هذه الحالة (يتم تحديد زر «مجددًا» تلقائيًا). - -مهلة إظهار الجواب :: المدة المنتظرة قبل إظهار الجواب تلقائيًا. - -مهلة إظهار السؤال التالي :: المدة المنتظرة قبل إظهار السؤال التالي. - -=== خطوط -تستطيع تغيير الخط المستخدم في أنكيدرويد في هذه الشاشة، بالإضافة إلى بعض خيارات التكبير المتعلقة بالخطوط. -انظر قسم <> لمزيد من المعلومات حول استخدام خطوط مخصصة. - -الخط الافتراضي :: يضبط الخط الافتراضي المستخدم عند المراجعة. تستطيع إضافة خطوط -إلى هذه القائمة عن طريق نسخها إلى مجلد "fonts". - -قابلية تطبيق الخط الافتراضي :: السلوك الافتراضي هو استخدام الخط الافتراضي فقط عندما -لا يكون هناك خط محدد في تنسيق البطاقة باستخدام أنكي الحاسوب. لكن بإمكانك فرض الخط الافتراضي -مع تجاهل أي خط في تنسيق البطاقة. - -خط المتصفح والمحرر :: الخط المستخدم في المتصفح والمحرر. - -نسبة تضخيم حجم خط متصفح البطاقات :: يضبط الخط المستحدم في متصفح البطاقات. - -[[gestures]] -=== الإيماءات -يسمح لك أنكيدرويد بتخصيص الواجهة بحيث تستطيع تنفيذ الإجراءات المستخدمة بشكل متكرر -بسرعة باستخدام إيماءات النقر والسحب. - -==== الإجراءات -يمكن استخدام الإيماءات التالية: - - * السحب للأعلى - * السحب للأسفل - * السحب لليسار - * السحب لليمين - * اللمس المزدوج - * اللمس في الأعلى - * اللمس في الأسفل - * اللمس في اليسار - * اللمس في اليمين - -تتوفر الإجراءات التالية لكل إيماء: - -لا إجراء :: لا يفعل شيئًا. مفيد إذا كنت تريد إيقاف بعض أنواع السحبات، أو مناطق النقر وما إلى ذلك. - -زر الإجابة 1 :: عند إظهار شاشة الجواب، اختر الزر الأحمر والتي تدل على أنك تريد -مراجعة البطاقة مجددًا قريبًا. هذا مفيد عند نسيان بطاقة أو عندما ترغب في مراجعتها بشكل متكرر أكثر. -عند إظهار السؤال، هذا الإجراء (وكل إجراءات الإجابة في الأسفل) ستظهر الجواب ببساطة. - -زر الإجابة 2 :: عند إظهار شاشة الجواب، اختر الزر الثاني من اليسار والذي يدل على أنك -وجدت البطاقة صعبة التذكر. - -زر الإجابة 3 :: عند إظهار شاشة الجواب، اختر الزر الثالث من اليسار. - -زر الإجابة 4 :: عند إظهار شاشة الجواب، اختر الزر الرابع من اليسار (عندما يكون ظاهرًا). - -الإجابة الموصى بها (أخضر) :: عند إظهار شاشة الجواب، اختر الزر الأخضر. -هذا الزر هو ما يجب أن تستخدمه في أغلب الأوقات. - -الإجابة بأفضل مما أوصي به :: عند إظهار شاشة الجواب، اختر الزر على اليمين، -ما يدل على أنك وجدت البطاقة سهلة التذكر جدًا وتريد فاصلًا زمنيًا أطول. - -تراجع :: تراجع عن الإجراء الأخير. - -تحرير البطاقة :: تحرير البطاقة الحالية. - -تعليم :: يضيف وسم "Marked" (مُعَلَّم) للملحوظة الحالية لتسهيل إيجادها. - -بحث عن التعبير :: عند تفعيل خاصية البحث (من الإعدادات المتقدمة)، يبحث عن تعبير في القاموس المحدد. -ملاحظة: يجب نسخ التعبير إلى الحافظة قبل أن يعمل هذا الإجراء. - -دفن البطاقة :: يخفي البطاقة الحالية من المراجعات. - -تعليق البطاقة :: يمنع البطاقة الحالية من الظهور أثناء المراجعات حتى تلغي تعليقها من خلال متصفح البطاقات. - -حذف الملحوظة :: يحذف الملحوظة المعروضة حاليًا وكل بطاقاتها. - -تشغيل الوسائط :: يعيد تشغيل أي تسجيل صوتي في البطاقة. - -توقف عن التعلم :: يوقف المراجعة ويأخذك إلى شاشة موجز الرزمة. - -دفن الملحوظة :: يدفن الملحوظة الحالية (يخفيها حتى اليوم التالي). - -تعليق الملحوظة :: يعلق الملحوظة الحالية (يخفيها حتى تلغي تعليقها). - -تفعيل المؤشر الأحمر :: يفعّل المؤشر الأحمر، إلا إذا كان المؤشر أحمر بالفعل، في هذه الحالة يُزال المؤشر. - -تفعيل المؤشر البرتقالي :: يفعّل المؤشر البرتقالي، إلا إذا كان المؤشر برتقاليًا بالفعل، في هذه الحالة يُزال المؤشر. - -تفعيل المؤشر الأخضر :: يفعّل المؤشر الأخضر، إلا إذا كان المؤشر أخضر بالفعل، في هذه الحالة يُزال المؤشر. - -تفعيل المؤشر الأزرق :: يفعّل المؤشر الأزرق، إلا إذا كان المؤشر أزرق بالفعل، في هذه الحالة يُزال المؤشر. - -إزالة المؤشر :: يزيل المؤشر من البطاقة. - -=== خيارات متقدمة -ميزات أقل شيوعًا للمستخدمين المتقدمين. - -مسار المجموعة :: تغير موقع تخزين بيانات أنكيدرويد (لا ينصح به). - -فرض مزامنة كاملة :: -انقر هذا الخيار لفرض رفع أو تنزيل كامل عند المزامنة التالية (على سبيل المثال، لأنك حذفت رزمة بدون قصد في جانب -وتريد استرجاعها بدلًا من مزامنة حذفها). - -إحصائيات متقدمة :: -يأخذ بعين الاعتبار تأثير المراجعات المستقبلية في المخطط البياني «توقعات». -انظر <<الإحصائيات المتقدمة,here>> لمزيد من المعلومات. - -==== حلول -إدخال الجواب في البطاقة :: -إذا ضبطت بطاقاتك ليتم سؤالك عن الجواب (كما هو مشروح في https://docs.ankiweb.net/#/templates/intro?id=card-templates[هذا القسم من دليل الحاسوب])، -يظهر أنكيدرويد لوحة مفاتيح في هذه البطاقات ويسمح لك بإدخال الجواب. - -+ --- -من أجل توفير تجربة مستخدم أفضل عند استخدام السبورة والإيماءات، نستخدم مربع إدخال منفصلًا -عن البطاقة. هذا غير متوافق مع طريقة عمل هذه الميزة في أنكي الحاسوب. - -للتوافق الكامل مع أنكي الحاسوب، تستطيع تفعيل هذا الخيار والذي يسمح لك بتوفير مساحة في الشاشة، -واختيار خط ملائم (ياباني مقابل صيني مثلًا) لمربع الإدخال. --- -حل للإدخال :: -بعض الأجهزة القديمة لا يمكنها نقل التركيز إلى مربع الإدخال، لذلك أضيف هذا الخيار (مخفي لنسخ واجهة البرمجة أعلى من 14). - -حل للنقر المطول :: -بعض الأجهزة القديمة لا تستطيع الكشف عن النقر المطول لبدء نسخ النص ولصقه، لذلك أضيف هذا الخيار -(مخفي لنسخ واجهة البرمجة أعلى من 10). - -إصلاح للحروف العبرية الصوتية :: -بعض الأجهزة القديمة لا يمكنها عرض النصوص العبرية، لذلك أضيفت هذه الميزة والتي تسمح للمستخدم -بتنزيل خط عبري يعمل وتنصيبه (مخفي لنسخ واجهة البرمجة أعلى من 15). - -تحويل النص إلى كلام :: -فعّل هذا الخيار لجعل أنكيدرويد يقرأ كل النصوص في بطاقاتك باستخدام المحرك الافتراضي لتحويل النص -إلى كلام. محرك غوغل الافتراضي يجب أن يعمل، محركات الطرف الثالث قد تعمل أو لا. -يطلب منك أنكيدرويد تحديد لغة مقدمة بطاقاتك وخلفها لكل رزمة في أول مرة تراجع فيها بطاقة في تلك الرزمة. -لتغيير اللغة أو إيقاف هذه الميزة لرزمة معينة بعد تحديد خيار في أول مرة، تحتاج إلى استخدام -خيار «إعادة تعيين اللغات» الموصوف في الأسفل وضبط كل رزمة على حدا. - -+ --- -كبديل، إذا كنت تريد قراءة أقسام من البطاقة فقط، أو إذا كنت ضبط لغة عدة رزم في دفعة واحدة، -تستطيع إدخال وسوم `` في <>. -على سبيل المثال، في القالب الخلفي التالي لبطاقة: - -[subs=+quotes] -.... -{{FrontSide}} - -
- -**{{ترجمة_إنجليزية}}**** -

-{{مثال}} -.... - -يتم قراءة حقل `ترجمة_إنجليزية` فقط بصوت إنجليزي بريطاني. لن يُقرأ حقل `مثال` الموجود -خارج وسم ``. يجب أن يكون لكل وسم `` الخاصيات التالية: - - * `service`: يجب ضبطه إلى `"android"`، وإلا لن يُقرأ محتوى وسم ``. - * `voice`: يُستخدم لتحديد لغة الصوت؛ يجب أن يكون https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes[رمز لغة مكونًا من حرفين أو ثلاث]، يمكن إتباعه بشرطة تحتية (_) و -https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2[رمز دولة أو منطقة مكون من حرفين]. -يمكن إيجاد قائمة محدثة دوريًا للغات المدعومة من قبل محرك غوغل في https://en.wikipedia.org/wiki/Google_Text-to-Speech[صفحته على ويكيبيديا]. - -لجعل كل من أنكيدرويد وإضافة https://ankiatts.appspot.com/[AwesomeTTS] على الحاسوب -يستخدمان محرك تحويل النص إلى كلام لقراءة أقسام من البطاقة، ضع وسم `` -داخل وسم `` المعرف من قبل AwesomeTTS، أو بالعكس. مثال: - -.... - - - {{ترجمة_إنجليزية}} - - -.... - -يتجاهل أنكيدرويد وسوم `` التي تصف خدمة تحويل نص إلى كلام غير معروفة. بينما قد يظهر AwesomeTTS -رسالة تنبيهية عند مصادفة وسم ``؛ لإسكات هذا التنبيه، أوقف خياري -_إظهار الأخطاء_ في تبويبة _التشغيل_ في شاشة _AwesomeTTS: تخصيص_ في نسخة الحاسوب. - -_قد تُحذف هذه الميزة في المستقبل لصالح إضافة منفصلة يمكن تنزيلها_ --- - -قاموس البحث :: -القاموس المستخدم للبحث عن البطاقات المنسوخة إلى الحافظة عند المراجعة. بعد ضبط قاموس، -افعل التالي لإجراء بحث: - -+ --- - * انقر نقرًا مطولًا على النص الذي تريد نسخه في شاشة المراجعة. - * بعد تحديد الكلمة التي تريد نسخها، اضغط أيقونة «نسخ» في شريط التطبيق في أعلى الشاشة. - * انقر نقرة في أي مكان. - * يجب أن تظهر أيقونة عدسة مكبرة، والتي تجري البحث عند ضغطها. - -كبديل، يمكن تنفيذ إجراء البحث باستخدام الإيماءات. - -_ستُحذف هذه الميزة في المستقبل لصالح إضافة على الأغلب._ --- - -إعادة تعيين اللغات :: -مفيد لإعادة ضبط لغة تحويل النص إلى كلام - -القارئ الإلكتروني (أزرار أعلى/أسفل) :: -دعم أزرار عتاد القارئ الإلكتروني (انظر https://github.com/ankidroid/Anki-Android/issues/1625[الموضوع رقم 1625]). - -_ستُحذف هذه الميزة في المستقبل لصالح إضافة على الأغلب._ - -مضاعفة فجوة التمرير :: -يضاعف مسافة التمرير عند استخدام أزرار عتاد القارئ الإلكتروني. - -== ميزات متقدمة -[[mathjax]] -=== دعم MathJax -MathJax هو نظام صف حروف حديث للرياضيات والكيمياء. يدعم أنكيدرويد بطاقات MathJax بدون إعداد. -Mathjax مضبوط لتوقع صيغ TeX، مع `\(` و `\)` لإحاطة للمعادلات السطرية، و `\[` و `\]` لمعادلات العرض. - -لتجربة هذه الميزة، أدخل التالي في حقل: - -... -\(\sqrt{x}\) -... - -وعاين البطاقة. - -لمزيد من التفاصيل، انظر https://docs.ankiweb.net/#/math?id=mathjax[دعم Mathjax] -في دليل أنكي الحاسوب. - -لم تعد https://www.reddit.com/r/Anki/comments/ar7lxd/how_to_load_mathjax_color_extension_on_anki/egm6u5j/[الحلول السابقة] -ضرورية ابتداءً من نسخة 2.9. - -[[reverseCards]] -=== البطاقات المعكوسة -لأنكي https://docs.ankiweb.net/#/getting-started?id=note-types[أنواع ملحوظات جاهزة تسمح لك بمراجعة البطاقات باتجاهين]. -عند <> في أنكيدرويد، عليك استخدام نوع من هذه الأنواع، -مثل «أساسي (وبطاقة معكوسة)»، والذي سينشئ بطاقة معكوسة تلقائيًا. - -++++++++++ - -++++++++++ - -إذا استخدمت نوع ملحوظة خاطئ عند إضافة مواد، تستطيع تغييرها من خلال <>، أو تغيير نوع ملحوظة عدة بطاقات في دفعة واحدة باستخدام المتصفح في نسخة الحاسوب. -لفعل هذا، اتبع التعليمات في قسم <>، -ثم افتح المتصفح في أنكي الحاسوب، واختر البطاقات التي تريد تغييرها، ثم اختر *تغيير نوع الملحوظة* من القائمة. - -كبديل، إذا كنت تستخدم مخطط بطاقة مخصصًا لا يتضمن بطاقة معكوسة، تستطيع تعديل نوع الملحوظة -لإضافة بطاقة معكوسة باتباع التعليمات في قسم https://docs.ankiweb.net/#/templates/generation?id=reverse-cards[البطاقات المعكوسة] في دليل أنكي الحاسوب. -رغم أنه أصعب مما هو في أنكي الحاسوب، يمكن تعديل نوع الملحوظة من أنكيدرويد مباشرة؛ -انظر قسم <> لمزيد من المعلومات. - -[[customFonts]] -=== خطوط مخصصة - -يسمح لك أنكيدرويد باستخدام خطوط غير الخاصة بالنظام في بطاقاتك. لضبطها بشكل صحيح، -ينصح بشدة باستخدام الطريقة الرسمية المستخدمة في أنكي الحاسوب. انظر https://docs.ankiweb.net/#/templates/styling?id=installing-fonts[القسم المتعلق بهذا في دليل الحاسوب] -لمزيد من المعلومات. - -كبديل، تستطيع إنشاء مجلد فرعي باسم "fonts" في مجلد أنكيدرويد الرئيسي -(المجلد الذي يحتوي على مجلد "backups"(نسخ احتياطية)، والمعروض في إعدادات > إعدادات متقدمة > مجلد أنكيدرويد)، ونسخ ملف خط متوافق (.ttf) إلى هناك، -وضبطه كالخط الافتراضي من خلال إعدادات > خطوط > الخط الافتراضي. -ملاحظة: تغير هذه الطريقة الخط الافتراضي *لكل* بطاقاتك، بينما يمكن للطريقة الرسمية أن تكون أكثر تحديدًا. -بالإضافة إلى ذلك، إذا زامنت مع أنكي ويب، فاستخدام هذه الطريقة يؤدي إلى أن تُعرض البطاقات بشكل مختلف على أجهزة مختلفة. - -تدعم الخطوط بصيغة ttf رسميًا فقط في أنكي/أنكيدرويد. -ينصح بخط https://www.google.com/get/noto/#/[Google Noto] لكل اللغات، كما يمكن إيجاد -بعض الخطوط المجانية https://github.com/ankidroid/Anki-Android/wiki/Freely-distributable-fonts[هنا]. - -ترجى ملاحظة أن على أنكيدرويد تحميل كامل الخط إلى الذاكرة لاستخدامه، ويمكن أن تكون خطوط -اللغات الآسيوية كبيرة. إذا كان لديك جهاز قديم ولاحظت أن أنكيدرويد يتوقف عن العمل بشكل متكرر -بعد تنصيب خط، فقد تكون قد تخطيت حد ذاكرة جهازك. في حالة خط Google Noto، لا ينصح -باستخدام خط اللغات الآسيوية المشترك، بل ينصح بالحصول على الخطوط الخاصة بكل لغة -https://github.com/googlei18n/noto-cjk[من هنا]. - -*ملاحظة 1*: إذا كان خيار «جلب الوسائط أثناء المزامنة» موقفًا، فقد تحتاج إلى نسخ ملف الخط يدويًا -من أنكي الحاسوب إلى مجلد AnkiDroid/collection.media. - -*ملاحظة 2*: إذا لم يعمل الخط بعد اتباع الخطوات هنا وفي دليل أنكي الحاسوب، انظر -https://github.com/ankidroid/Anki-Android/wiki/FAQ#i-followed-the-instructions-in-the-manual-but-i-still-cant-get-my-custom-font-to-work[«خطوات مفصلة حول كيفية حل مشاكل الخطوط»]. - - -[[customizingCardLayout]] -=== مخطط بطاقات مخصص -يمكن تخصيص مخطط بطاقاتك بالكامل، إلا أن هذا موضوع متقدم مع منحنى تعلم حاد بعض الشيء، -وقد تجد من الأسهل إجراء التخصيص في <>. - -هناك تعليمات مفصلة حول تحرير أنواع الملحوظات في قسم https://docs.ankiweb.net/#/templates/intro?id=card-templates[قوالب البطاقات] في دليل الحاسوب، -كما تتوفر معظم الإجراءات المناقشة هناك في أنكيدرويد بالنقر على «بطاقات» في أسفل محرر الملحوظات، -أو اختيار خيار «إدارة أنواع الملحوظات» في محدد الرزم. لن تُكرر التفاصيل هنا حيث إنه تتوفر معلومات مفصلة حول تخصيص -مخططات البطاقات في دليل الحاسوب. - -هناك أيضًا https://github.com/ankidroid/Anki-Android/wiki/Advanced-formatting[صفحة تنسيقات متقدمة] -في ويكي أنكيدرويد مع إرشادات عديدة حول الاستفادة القصوى من تنسيق البطاقات. ننصحك بقرائتها وتعديلها بحرية -إذا كان لديك أي إرشادات تريد مشاركتها مع المجتمع. - -[[typeInAnswer]] -=== ميزة إدخال الجواب - -يسمح لك أنكيدرويد بإدخال جواب ومقارنته بالجواب الصحيح. عليك إعداد هذا من خلال أنكي الحاسوب، -كما هو مشروح في https://docs.ankiweb.net/#/templates/fields?id=checking-your-answer[دليل الحاسوب]. - -يستبدل أنكي الحاسوب حقل `{{type:NN}}` في مقدمة البطاقة بصندوق إدخال. -في أنكيدرويد، يُستبدل “......”، ويظهر صندوق إدخال في الأسفل. تظهر المقارنة بين النص المدخل والنص الصحيح -في جانب السؤال في مكان حقل `{{type:NN}}` هناك، كما في نسخة الحاسوب. - -يمكن إخفاء صندوق الإدخال ولوحة المفاتيح بتفعيل «تعطيل إدخال الجواب» في التفضيلات. - -حتى عندما تعطيل إدخال الجواب، يظهر الجواب الصحيح في جانب الجواب. هذا مقصود؛ وإلا قد -لا يظهر الجواب الصحيح أبدًا. - -لإخفاء المقارنة (لأن الجواب الصحيح ظاهر على أي حال مثلًا)، يمكن استخدام معرف HTML `typeans`. -أضف `.mobile #typeans {display: none;}` إلى https://docs.ankiweb.net/#/templates/styling?id=card-styling[تنسيق البطاقة] باستخدام نسخة الحاسوب. - -لمؤشر إدخال الجواب والمقارنة أصناف HTML أكثر يمكن استخدامها لتغيير طريقة عرضها. -بعضها مثل الموجود في الحاسوب، بينما البعض الآخر خاص بأنكيدرويد. - -تستخدم المقارنة ثلاث أصناف: typeGood, typeBad and typeMissing لإضافة خلفية خضراء، -وحمراء، ورمادية إلى حقل المقارنة. تُستخدم هذه الأصناف في نسخة الحاسوب أيضًا. - -لمؤشر `......` صنف `typePrompt` أيضًا. - -عندما يكون إدخال الجواب معطلًا من خلال التفضيلات، يضاف صنف `typeOff` إلى المؤشر -في جانب السؤال، وإلى عنصر div الذي يحتوي حقل المقارنة في جانب الجواب. يمكن استخدام هذا الصنف -لإظهار مؤشر الإدخال أو إخفاء المقارنة في هذه الحالة. - -[[advancedStatistics]] -=== الإحصائيات المتقدمة - -إذا كانت الإحصائيات المتقدمة مفعلة، يتغير مخطط «توقعات» ليظهر العدد المقدر للمراجعات -التي ستصبح مستحقة في يوم محدد في المستقبل مع الأخذ بعين الاعتبار المراجعات المستقبلية، -وتعلم البطاقات الجديدة، والفشل في تعلم بطاقات. تظهر الأشرطة والمحور الأيسر عدد البطاقات -المستحقة في كل يوم إذا درست كل البطاقات في كل يوم، بينما يظهر الخط والمحور الأيمن -عدد البطاقات التي لم ترها بعد (معروضة كـ «تعلُّم»)، والبطاقات اليافعة، والناضجة -والتي ستتكون منها رزمتك أو مجموعتك إذا درست كل البطاقات كل يوم. -لا يحصي مخطط التوقعات المراجعات التي مضى تاريخ استحقاقها. إنه يفترض أن هذه البطاقات سُتراجع -حسب خيار الرزمة «عدد المراجعات الأقصى في اليوم». - -يمكن تفعيل الإحصائيات المتقدمة من خلال إعدادات > إعدادات متقدمة > إحصائيات متقدمة (في قسم الإضافات). - -نتائج المراجعات المستقبلية وتعلم البطاقات والفشل في ذلك يؤثر بالمراجعات بعد تلك المراجعات المستقبلية. -لأخذ هذا بعين الاعتبار، تُحسب احتمالية كل نتيجة استنادًا إلى سجل المراجعات. ثم يُختار الناتج بشكل عشوائي، -بحيث أن الناتج الأكثر احتمالًا حسب سجل المراجعات يُحتمل اختياره أكثر من ناتج أقل احتمالًا حسب سجل المراجعة. -تؤثر كل الإعدادات بكيفية اعتبار تأثير المراجعات المستقبلية على المراجعات القادمة. - -حساب أول س يوم، ومحاكاة الباقي :: -إذا ضُبط هذا الإعداد إلى رقم أكبر من صفر، فبدلًا من اختيار ناتج عشوائيًا، يؤخذ كل ناتج محتمل -بعين الاعتبار في المحاكاة، مع احتماليته. تُعتبر الاحتمالية للمخطط البياني والمراجعات المستقبلية -التي تنتج عنها، ما يؤثر بالمخطط أيضًا. لمراجعة عدة نواتج محتملة (لنقل 4)، وكلها تنتج مراجعة. -لتلك المراجعة نواتج محتملة أيضًا، وهكذا دواليك. -إذا تمت محاكاة عدة مراجعات بهذه الطريقة، يجب أخذ عدة مراجعات (4 x 4 x 4 x ... ) -بعين الاعتبار ما يؤدي إلى زيادة الوقت اللازم لإنشاء المخطط البياني. -لذلك، فالمراجعات بعد س يوم من الآن تحاكى باختيار ناتج عشوائي. - -+ -باختصار، قيمة س أكبر تعطي مخططًا أدق، لكن هذا يأخذ وقتًا أكبر لإنشاء المخطط. - -دقة الحساب :: - -المراجعات التي تحدث باحتمالية أصغر من %100 ناقص دقة الحساب المضبوطة تحاكى باختيار ناتج عشوائي -بدلًا من اعتبار كل ناتج متحمل. يمكن تطبيق هذا الإعداد فقط إذا تم حساب أول س يوم. -إذا لم تكن الإحصائيات المتقدمة مفعلة، يظهر مخطط «توقعات» العدد المقدر للمراجعات التي -ستصبح مستحقة في يوم محدد في المستقبل إذا لم تراجع بطاقات، ولم تتعلم بطاقات جديدة ولم تفشل في تذكر أي بطاقة. - -+ -باختصار، دقة أعلى تعطي مخططًا أكثر دقة، لكن هذا يأخذ وقتًا أكبر لإنشاء المخطط. - -عدد مرات تكرار المحاكاة :: -ينشئ المخطط عدة مرات ثم يعرض معدل هذه المخططات. -في كل مرة ينشئ فيها المخطط، قد يتم اختيار ناتج آخر عشوائيًا. إذا أخذنا معدل عدة نتائج مختارة عشوائيًا -مع اعتبار الاحتماليات من سجل المراجعات، فسيكون الناتج المتوسط قريبًا إلى معدل احتماليات سجل المراجعة على الأغلب. -إذا أخذنا معدل عدة مخططات، فسيكون المخطط المتوسط -على الأغلب- قريبًا إلى المخطط المولَّد -باعتبار كل النتائج المحتملة. إذا لم يكن عدد المخططات المأخوذ معدلها كبيرًا جدًا، -فسيكون هذا أسرع من اعتبار كل النتائج المحتملة. - -+ -باختصار، عدد أكبر من مرات التكرار يعطي مخططًا أدق، لكن هذا يأخذ وقتًا أكبر لإنشاء المخطط. - -[[reminders]] -=== التذكيرات -يمكن لأنكيدرويد أن يذكرك بتخصيص بعض الوقت لمراجعة البطاقات كل يوم في وقت محدد باستخدام -نظام تنبيهات أندرويد. تستطيع ضبط التذكيرات لكل مجموعة خيارات بشكل منفصل. -لضبط تذكير، اذهب إلى خيارات الرزمة > تذكيرات، وفعّل الخانة وحدد وقت التذكير. -للتوقف عن تلقي التنبيهات، اذهب إلى خيارات الرزمة > تذكيرات وألغي تعليم الخانة. - -تعمل التنبيهات للرزم العليا فقط. يرجى إخبارنا إذا كنت تريد إضافة تنبيهات للرزم الفرعية أيضًا. - -[[setlanguagehint]] -=== التحديد التلقائي للغة -في أنكيدرويد ميزة تحديد تلقائي للغة في محرر الملحوظات بدءًا بالإصدار 2.13. -تسمح لك هذه الميزة بتعريف لغة افتراضية للوحة المفاتيح في حقل لنوع ملحوظة. - -إذا كان لديك مثلًا حقول ملحوظة روسية وإنجليزية وتدعم لوحة مفاتيحك -واجهة setImeHintLocales البرمجية في أندرويد، فسيتغير مخطط لوحة المفاتيح -إلى الروسية في الحقل الأول ثم إلى الإنجليزية في الحقل الثاني تلقائيًا عندما يتم -تركيز الحقول. https://youtu.be/JrxDjTrRhBE[شاهد هذا الفيديو لترى كيف هذا] - -[[keyboardShortcuts]] -== اختصارات لوحة المفاتيح - -=== الشاشة الرئيسية - -|=== -|اختصار | وظيفة - -|kbd:[A] -|إضافة ملحوظة - -|kbd:[B] -|متصفح البطاقات - -|kbd:[Y] -|مزامنة -|=== - -=== المراجعة - -|=== -|اختصار | وظيفة - -|kbd:[1],kbd:[2],kbd:[3],kbd:[4] -|ضغط زر الإجابة رقم س - -|Gamepad Y -|قلب البطاقة/ضغط زر الإجابة الأول - -|Gamepad X -|قلب البطاقة/ضغط زر الإجابة الثاني - -|Gamepad B -|قلب البطاقة/ضغط زر الإجابة الثالث - -|Gamepad A -|قلب البطاقة/ضغط زر الإجابة الرابع - -|kbd:[Space],kbd:[Enter] -|قلب البطاقة/الإجابة بـ«جيد» - -|kbd:[e] -|تحرير الملحوظة - -|kbd:[*] -|تعليم الملحوظة - -|kbd:[-] -|دفن البطاقة - -|kbd:[=] -|دفن الملحوظة - -|kbd:[@] -|تعليق البطاقة - -|kbd:[!] -|تعليق الملحوظة - -|kbd:[r],kbd:[F5] -|إعادة تشغيل الوسائط - -|kbd:[z] -|تراجع -|=== - -=== محرر الملحوظات -|=== -|اختصار | وظيفة - -|kbd:[Ctrl+Enter] -|حفظ الملحوظة - -|kbd:[D] -|تحديد الرزمة - -|kbd:[L] -|محرر قوالب البطاقات - -|kbd:[N] -|تحديد نوع الملحوظة - -|kbd:[T] -|تحرير الوسوم - -|kbd:[Ctrl+P] -|معاينة الملحوظة - -|kbd:[Ctrl+B] -|خط غامق - -|kbd:[Ctrl+I] -|خط مائل - -|kbd:[Ctrl+U] -|خط سفلي - -|kbd:[Ctrl+R] -|إضافة خط أفقي - -|kbd:[Ctrl+H] -|إضافة عنوان - -|kbd:[Ctrl+F] -|تغيير حجم الخط - -|kbd:[Ctrl+M] -|إضافة معادلة MathJax - -|kbd:[Ctrl+Shift+C] -|إضافة عبارة ملء فراغات جديدة - -|kbd:[Ctrl+Alt+Shift+C] -|إضافة عبارة ملء فراغات جديدة باستخدام الرقم نفسه - -|kbd:[Ctrl+1..0] -|أضف كود HTML مخصص -|=== - -=== متصفح البطاقات -|=== -|اختصار |وظيفة - -|kbd:[Ctrl+A] -|تحديد الكل - -|kbd:[Ctrl+E] -|تحرير الملحوظة - -|kbd:[Ctrl+D] -|تغيير الرزمة - -|kbd:[Ctrl+K] -|تعليم الملحوظة - -|kbd:[Ctrl+Alt+R] -|إعادة جدولة -|=== - - -=== محرر قوالب البطاقات -|=== -|اختصار |وظيفة - -|kbd:[Ctrl+P] -|معاينة التغييرات - -|=== - - - -[[betaTesting]] -== تجربة النسخ التجريبية -إذا كنت تريد تجربة آخر الميزات في أنكيدرويد، تستطيع التسجيل في برنامج تجربة النسخ التجريبية كالتالي: - - . رز https://play.google.com/apps/testing/com.ichi2.anki[صفحة Google Play للنسخ التجريبية] - . اضغط *Become a beta tester* (كن مستخدمًا مجربًا) - -بعد هذه الخطوات، سيُنصَّب الإصدار التجريبي الأخير من قبل Google Play كما تنصب التحديثات العادية. -إذا كنت تحب المغامرة أكثر، تستطيع أن تصبح مجرب نسخ الألفا (alpha) أيضًا بالانضمام إلى -https://groups.google.com/forum/#!forum/ankidroidalphatesters[مجموعة مجربي الألفا]، بالإضافة إلى إجراء الخطوات السابقة لنسخ البيتا (beta). - -الرجاء الإعلام عن أي أعطال تجدها في نسخ التطوير من خلال متعقب أخطاء أنكيدرويد، كما هو موضح في -link:help-ar.html[صفحة المساعدة]. - -إذا كنت تريد ترك البرنامج التجريبي في أي وقت، زر https://play.google.com/apps/testing/com.ichi2.anki[صفحة Google Play للنسخ التجريبية] واضغط *Leave the test* (ترك الاختبار). - -[[contributing]] -== المساهمة في أنكيدرويد -إن أنكيدرويد مشروع مفتوح المصدر، ويعتمد تطويره على مساهمات المتطوعين. إليك بعض طرق المساهمة في أنكيدرويد: - -المشاركة :: أعط تقييمًا للتطبيق، أو انضم إلى https://groups.google.com/forum/#!forum/anki-android[منتدى أنكيدرويد] -وأجب عن أسئلة المستخدمين الآخرين، أو أعلم عن الأخطاء، أو كن <>، إلخ. -يمكن الوصول إلى معلومات أكثر حول المساهمة كغير مطور في https://github.com/ankidroid/Anki-Android/wiki/Contributing[الويكي]. - -الترجمة :: ترجمة تطبيق أنكيدرويد ودليل الاستخدام هذا مساهمة من قبل المستخدمين، ومُقدَّرة كثيرًا. -انظر https://github.com/ankidroid/Anki-Android/wiki/Contributing#translate-ankidroid[صفحة ويكي الترجمة] -لتعليمات مفصلة حول المساهمة في الترجمة. - -التطوير :: الشفرة المصدرية لأنكيدرويد متوفرة على https://github.com/ankidroid/Anki-Android[صفحة Github]. ونرحب بإصلاحات الأعطال والميزات الجديدة أيضًا. -قبل قضاء كثير من الوقت في العمل على ميزة جديدة، فقد ترغب أولًا في السؤال في المنتدى عما إذا -كان من الممكن أن تُدمج مع المشروع الرئيسي، حيث لا تُقبل كل الميزات الجديدة. -إذا كنت مبتدئًا في برمجة أندرويد، فلا تتردد في السؤال في المنتدى عن إرشادات أو مهام مناسبة للمبتدئين. diff --git a/manual-ja.asc b/manual-ja.asc deleted file mode 100644 index a2f2706..0000000 --- a/manual-ja.asc +++ /dev/null @@ -1,768 +0,0 @@ -:docinfo1: -:toc: - -= AnkiDroid 2.14 マニュアル -:sectanchors: - -[.text-right.big] -link:manual.html[English] - -== はじめに - -AnkiDroidをお使いいただき、ありがとうございます。AnkiDroidは、よく使われているSRS(訳注:間隔反復システム。復習までの時間を管理することで効率よく暗記する方法)ソフト - http://ankisrs.net/[「Anki」] (対応OS: Windows / Mac / Linux / BSD)の、Android用クライアントアプリです。 - -AnkiDroidは、このAnkiと連携して使うことを想定して作られています。Ankiを全く使わずに学習することも、オンライン上で共有されているデッキ(=カードのセット)をダウンロードするなどすればできなくはありませんが、 -Ankiでのみ実行できる機能や、Ankiで実行するほうがずっと効率的な機能もあります。なお、このマニュアルで使われている用語を理解するため、Anki自体のマニュアルのうち、少なくとも http://wikiwiki.jp/rage2050/?2.0%2FTheBasics[「基本」の節] を読んでおくことを**強くおすすめ**します。 - -もし探している事柄がこのマニュアルに書かれていなかった場合は、 https://github.com/ankidroid/Anki-Android/wiki[AnkiDroidのWiki] を確認してください。更新履歴、バグレポートや新機能リクエストを投稿するための手順、FAQ(よくある質問)などを見ることができます。 - -[[gettingStarted]] -== 使ってみる - -AnkiDroidを使い始めるには、まず何か学習するためのカードを用意する必要があります。メイン画面で、右下の大きな青いボタンをタップすると、新しいカード用のノートを追加したり、共有デッキ(他の人が作成してオンライン上で共有しているデッキ)をダウンロードしたり、新しい空のデッキを作成したりすることができます。 - -この https://www.youtube.com/watch?v=F2K1gOSdIZA[チュートリアル動画](約5分・日本語字幕対応)では、AnkiDroidでのカードの追加方法、ダウンロード方法、学習方法を紹介しています。より詳しい情報はこのマニュアルに記載されています。 - -もしAnkiを既にお使いで、PC上のデッキをAnkiDroidに取り込みたいという場合は、 - <> の節に進む方がよいかもしれません。 - -[[deckPicker]] -== デッキリスト - -*注意:* この節の内容は、Ankiにおける http://wikiwiki.jp/rage2050/?2.0%2FTheBasics[デッキとカード] がどういったものなのかを理解していることを前提としています。 - -AnkiDroidを起動すると、デッキ(=カードのセット)のリストの画面が表示されます。あなたのカードは全て、このリスト内のデッキに含まれています。この画面では以下のような操作ができます。 -++++++++++ - -++++++++++ - -=== 追加ボタン -画面右下の水色の大きな「+」ボタンは、AnkiDroidに新しいコンテンツを追加するために使います。このボタンを押すと次の3つのオプションが表示されます。これらの操作は https://www.youtube.com/watch?v=F2K1gOSdIZA[チュートリアル動画]で見ることができます。 - -ノートを追加 :: 新しいカード(のためのノート)をAnkiDroidで作りたい時にこのオプションを選んでください。「ノート」と「カード」はAnkiでは特殊な意味を持っています。これは http://wikiwiki.jp/rage2050/?2.0%2FTheBasics[Ankiのマニュアルの「基本」の節]で説明されています。ノートを追加するための簡単な紹介であるチュートリアル動画を見てください。より詳しい情報は、この後の <> に記載されています。 - -共有デッキを取得 :: 他のユーザーが提供したデッキ(=カードのセット)をダウンロードするために、インターネット上の「AnkiWeb」のページを表示します。 - . ネットに接続されていることを確認する - . デッキリスト画面の右下にある、「+」印の丸いボタン(追加ボタン)をタップし、このボタン(「共有デッキを取得」)をタップする。AnkiWebが開く - . カテゴリーから選択するか、検索語を入力する - . 試してみたいデッキの「Info」をタップ - . 下までスクロールし、「Download」をタップ - . ブラウザがダウンロードを開始し、終了すると完了の通知が表示されるので、それをタップ - . AnkiDroidの画面に戻り、確認のダイアログが表示される。「追加」ボタンをタップ - . インポートが終了次第、学習準備完了 - -デッキを新規作成 :: 新しい、空のデッキを作成します。 - . デッキリスト画面の右下にある、「+」印の丸いボタン(追加ボタン)をタップし、このボタン(「デッキを新規作成」)をタップする。 - . デッキに名前を付ける(例:「英単語」) - . そのデッキに、上記の「ノートを追加」の説明に沿ってカードを追加する - - -これらの使い方のデモを https://www.youtube.com/watch?v=F2K1gOSdIZA[チュートリアル動画] で見ることができます。 - -=== アクションバー - -AnkiDroidの各画面の上部には、他のアプリと同様にアクションバーが置かれており、ボタンがいくつか用意されています。デッキリスト画面のアクションバーからは次のような操作が可能です。 - -ナビゲーションメニューボタン :: アクションバー左端のアイコン(「≡」の形のマーク)をタップすると <> が表示され、主な画面にすばやくアクセスすることができます。 - -同期ボタン :: 回転する矢印のボタンは、デッキをクラウドストレージと同期するために使います。 -詳しくは <> で説明します。 - -「その他」ボタン :: アクションバー右端のアイコンをタップすると、比較的使用頻度の少ない操作のメニューが表示されます。これらの操作については後述します。 - - ヒント:アクションバーのボタンを長押しすると、そのボタンの機能を示す文字が表示されます。(ナビゲーションメニューボタンと「その他」ボタンでは表示されません) - -=== 学習する -カードの学習を始めるには、そのカードが入っているデッキの名前の部分をタップしてください(10インチ以上のタブレットでは、その次に「学習開始」ボタンをタップしてください)。AnkiDroidが学習モードに移ります。 - -なお、選択中のデッキは、文字の背景が灰色となって強調されます。また、<> は青色のフォントで強調されます。フィルターデッキについては後述します。 - -=== その他のデッキの操作 -デッキを長押しすると、デッキに対して可能なその他の操作のメニューが表示されます。 - -このデッキの名前を変更 :: デッキの名前を変えたいときにはこれを使ってください。 - -デッキ オプション :: デッキオプションを使うと、デッキごとの学習オプションを設定することができます。 -オプションの詳細については、 http://wikiwiki.jp/rage2050/?2.0%2FDeckOptions[Ankiのマニュアルの該当部分] を参照してください。 - -カスタム学習 :: 通常のスケジュール(訳注:Ankiシステムによって自動的に設定される)以外の学習をしたい際に便利な機能があらかじめ準備されています。例えば、一日の学習枚数の上限をその日だけ上げる、といったメニューがあります。詳細については <> の節を参照してください。 - -このデッキを削除 :: デッキを削除したいときにはこれを使ってください(注意:この操作自体を取り消すことはできませんが、 <> ことは可能です)。 - -このデッキをエクスポート :: この機能は、デッキを他のユーザーと共有するために使うことができます。詳しくは <> の節を参照してください。 - -再構築 / 全て戻す :: 選択中のデッキが <> の場合、「再構築」(カードの抽出条件によって再度カードを抽出し直す)と「全て戻す」(デッキ内のカード全てを元のデッキに戻す)、という選択肢も表示されます。 - -=== デッキリスト上でタップ操作可能なエリア -デッキリスト上の各行は、タップ操作可能な3つのエリアに分かれています。 - -デッキ エキスパンダー :: もし -http://wikiwiki.jp/rage2050/?2.0%2FTheBasics#h2_content_1_1[サブデッキ]が使われている場合は、デッキエキスパンダーボタンがデッキの左端に表示されます。このボタンをタップすると、そのデッキのサブデッキを表示したり非表示にしたりすることができます。「˃」のアイコンは、そのデッキには非表示中のサブデッキがあり、それを表示する(展開する)こともできるということを意味し、「˅」のアイコンは、そのデッキのサブデッキを表示中であり、それを非表示にする(折りたたむ)こともできるということを意味します。これらのアイコンがない状態は、そのデッキにはサブデッキがないということを意味します。 -なお、サブデッキは「上位デッキ名::サブデッキ名」(例:「英語::英文法」)のようにデッキ名を入力することで作成できます。 - -デッキ名 :: タップ操作可能なエリアのうち、最も肝心な部分です。この部分をタップすると、学習するカードがある場合は学習画面が表示されます。 - -カウントボタン :: 各デッキの右端にある3組の数字の部分は、デッキ名部分とは別のエリアです。このエリアをタップすると、学習画面ではなくデッキ概要画面が表示されます。このボタンは、そのデッキで学習できるカードの数を手早く確認したい時に便利です。 - -=== 高度な操作 -使用頻度が比較的低いと思われる機能は、アクションバー右端のボタンを押すと表示されるメニューから選ぶことができます。 - -操作を元に戻す :: 学習セッションで最後のカードを学習した際の操作を取り消したい場合にこのボタンを使います。 - -データベースをチェック :: データベース内の様々な不具合を自動的に修正します。また、どのカードにも使用されていないタグを削除します。コレクションに何か問題が生じたと思った場合は、まず最初にこの機能を試してみてください。 - -メディアをチェック :: メディアの同期で何か問題が生じた際にこの機能を試してみてください。 - -無効なカードをチェック :: コレクション内に無効なカード(必要な情報を削除したことにより、表側が表示できないカード)があるかをチェックします。その後、無効なカードが見つかった場合、それらを一括削除することもできます。詳しくは、 http://wikiwiki.jp/rage2050/?cmd=read&page=2.0%2FCardsAndTemplates&word=%B6%F5%C7%F2%A4%CE%A5%AB%A1%BC%A5%C9#h2_content_1_8[Ankiのマニュアルの該当部分]をご覧ください。 - -バックアップから復元 :: AnkiDroidの<>ファイルを使い、コレクションを復元することができます。 - -ノートタイプを管理 :: ノートタイプの追加、編集、削除をすることができます。詳しくは、<>の項をご覧ください。 - -インポート :: デッキの情報が記録された専用ファイル(ankiファイル(*.apkg))をインポート(読み込み)します。詳しくは、<>の項をご覧ください。 - -エクスポート(全デッキ) :: コレクション全体を「collection.apkg」というファイルとして書き出します。詳しくは <> の項をご覧ください。 - -=== デッキ カウント -各デッキ名の右側に、3種類の数字が表示されています。左端の青い数字は、 -今日新しく学習する必要があるカードの数を表しています。Ankiでは、未設定の場合、新規カードを一日につき20枚学習するよう設定しますが、 -この数は必要に応じて設定することができます。真ん中にある赤い数字は、 -今日学習することになっているカードのうち、現在「学習中」(基本学習中または再学習中)状態のカードの数を表します。 -右端の緑の数字は、今日復習することになっているカードの数です(つまり、すでに「学習中」状態を終えているカードです)。 -まだ学習したことがないデッキについては、赤と緑の数字は両方ともゼロになっています。(訳注:AnkiをはじめとするSRSでは、「このカードはすっかり覚えたし、10日後にもう一度復習しよう」とか「このカードは今日のうちにもう一度見ておこう」とかいったことは、人間の記憶能力を考慮したアルゴリズムで自動的に決定されます。詳細についてはAnkiのマニュアルを読むことをおすすめします) - -既に述べた通り、これらの数字部分をタップすると、デッキ概要画面に移動します。 - - -[[drawer]] -== ドロワーメニュー -++++++++++ - -++++++++++ - -このアプリのほとんどの画面において、アクションバー左端のアイコンをタップするか、 -あるいは画面左の外側からスワイプするかでドロワーメニューを開くことができます。 -このメニューを使って、アプリの各画面にすばやく移行することができます。具体的には、以下のような画面を開けます。 - -デッキリスト :: デッキのリストが表示されるトップ画面( <> ) -カードブラウザ :: カードの一覧が表示される画面( <> ) -統計 :: 学習の進行状況を確認するための画面( http://wikiwiki.jp/rage2050/?2.0%2FGraphsAndStatistics[詳しくはAnkiのマニュアルで] ) -ナイトモード :: ダークグレーを基調としたデザインに切り替わります。目が疲れにくい画面とされており、暗い場所などでの学習でもおすすめです。ナイトモードで使用されるカードの背景とフォントの色のカスタマイズについては、 https://github.com/ankidroid/Anki-Android/wiki/Advanced-formatting#customize-night-mode-colors[Wiki] をご覧ください。 -設定 :: AnkiDroidの各種設定をする画面( <> ) -ヘルプ :: このページを開く -フィードバック :: AnkiDroid開発チームに連絡する - -[[deckOverview]] -== デッキ概要画面 -++++++++++ - -++++++++++ -デッキリスト画面でデッキカウントの部分をタップすると、デッキ概要画面に移動します。(タブレット端末の画面では、このデッキ概要画面はデッキリストの右側に常に表示されています。) - -この画面では、このデッキ内のカード枚数についての概要を見ること、カスタム学習セッションの作成、フィルターデッキ内カードの再構築・返却、学習オプションの変更、といったことができます。「学習開始」ボタンが表示されている場合は、そのボタンをタップすると、そのデッキの学習画面に移動します。 - -=== アクションバー -アクションバーとは、画面上部の水色の部分を指します。デッキ概要画面のアクションバーに表示されるアイコンは、そのデッキが通常のデッキなのかフィルターデッキなのかによって異なります。通常のデッキの場合は、次のアイコンが表示されます。 - -カスタム学習 :: スパナ(レンチ)のマークのアイコンです。タップすると、通常のスケジュール(訳注:Ankiシステムによって自動的に設定される)を超えて学習をしたり、デッキの中の特定のカードだけについて学習したり、といったカスタム学習セッションを作成することができます。詳細は <> を参照してください。 - -一方、フィルターデッキの場合は、次のアイコンが表示されます。 - -全て戻す :: 「×」マークのアイコンです。タップすると、そのフィルターデッキ内の全カードを、それぞれの元のデッキに戻して、フィルターデッキを空にします。 - -再構築 :: 一つの矢印が回転しているアイコンです。タップすると、デッキオプションの「フィルター」の項目の設定にしたがって、カードを改めて抽出し直します。 - -右端の「その他」ボタンを押すと表示される機能は以下の通りです。 - -デッキ オプション :: 選択中のデッキに関係するいくつかのオプションを設定できます。 -例えば、新規カードや復習カードの、1日あたりの表示枚数などがここで設定できます。 -詳細は、 http://wikiwiki.jp/rage2050/?2.0%2FDeckOptions[Ankiのマニュアルのデッキオプションの項目] を参照してください。 - - -[[reviewer]] -== 学習画面 -デッキリスト画面でデッキ名をタップするか、デッキ概要画面で「学習開始」ボタンを押すと、学習画面に移動し、実際に学習をすることになります。 -++++++++++ - -++++++++++ - -=== 基本 -今までにAnkiを使ったことがないのであれば、この先を読む前に -http://ankisrs.net/docs/manual.html#_intro_videos[入門用動画] を見てみたほうがよいかもしれません(訳注:英語です)。 -基本的な学習の手順について説明しています。 - -画面の左上に、3つの数字が表示されています。それぞれ左から順に、 -新規カードの数、学習中(基本学習中または再学習中)カードの数、復習カードの数に対応します。 -これが何を表しているのかは、先述のAnkiの入門用動画により詳しく説明されていますので、 -一度 http://ankisrs.net/docs/manual.html#_intro_videos[見てみてください。] -(訳注:しつこいようですが英語です) - -さて、カードを見てみて、問題の答を思い出すことができたら、 -あるいはさっぱり思い出せないと思ったら「解答を表示」ボタンを押してください。そうすると、画面下部には2〜4つの評価回答用のボタンが表示されます。 -いくつ表示されるかは、これまでにどのように答えたかによって変動します。 -それぞれの評価回答ボタンには、「10分」や「5日」といった形で時間が表示されているはずです。ボタンをひとつ選んで押すと、そのカードは表示された時間の後に再表示されます。つまり、「5日」のボタンを選んだらそのカードは5日後にまた出題される、ということです。 -どの程度しっかり覚えていたかを自分で評価して、どれかボタンを選んでください。 - -すばやく学習操作をするため、ボタンを直接押すかわりに対応するジェスチャー(例えばタップやスワイプなど)を設定しておくこともできます。 -ジェスチャーの設定については、 <> を参照してください。 - -=== アクションバー -学習画面においても、上部のアクションバーにはよく使う操作のためのボタンが配置されています。なお、表示されるボタンの数は、端末の画面サイズによってAndroidシステムが自動的に決定しています。画面にボタンがすべて入りきらない場合、入らなかった操作はメニューから実行することができます。またそれぞれのボタンの意味がよく分からなければ、長押しすると何の操作なのかが表示されます。学習画面では、次のような操作が可能です。 - -元に戻す :: 最後に学習したカードについて、選択した評価を取り消し、学習前に戻します(このボタンは必ず表示されます)。 -カードをマーク :: ブラウザで探しやすいように、現在のノートに「marked」(マーク付き)というタグをつけます。この機能は、そのノートについて後で何かしようと思ったとき、例えば「家に帰ってから辞書で調べてみよう」などというときに便利です。また、マーク付きのカードは、学習画面では右上に星印が表示されます。 -カードの編集 :: ノートの編集画面を開き、表示される内容を書きかえることができます(さらに詳しいことは、 <> を参照してください)。 -延期、保留、削除 :: 表示中のカードやノートについて、学習スケジュールからはずすための方法をいくつか選択できます(詳しくは http://wikiwiki.jp/rage2050/?2.0%2FStudying#editing-and-more[Ankiのマニュアル] を参照してください)。 -音声・動画の再生 :: カードに音声ファイルや動画ファイルが付いていれば、それを再生します。 -ホワイトボードを有効にする / ホワイトボードを無効にする :: この操作では、現在のデッキについてホワイトボード機能を有効にしたり無効化したりします。ホワイトボード機能を使うと答えを画面に手書きで描くことができ、漢字を勉強する場合などに有効です。ホワイトボードが有効になっていると、学習画面でさらに二つの操作、ホワイトボードの消去と非表示ができるようになります。ホワイトボードを無効にすれば、ホワイトボードだけでなくこの二つの操作も無効化されます。 -デッキ オプション :: 選択中のデッキ特有の学習オプションを開きます。詳しくは http://wikiwiki.jp/rage2050/?2.0%2FDeckOptions[Ankiのマニュアルの該当部分]を参照してください。 - -=== 学習の終了 - -その日に学習することになっているカードをすべて終えると、デッキリスト画面に戻り、「おめでとうございます」のメッセージが表示されます。その後、この画面から他のデッキをタップして学習を続けることもできますし、。今日はもうおしまいにしようという場合は、単純に端末のホームボタンを押してAnkiDroidを終了することもできます(また、学習の途中でこのように終了することも可能です)。 - -「おめでとう」画面が表示されたあとも同じデッキで学習を続けたい場合(訳注:試験前の詰め込み勉強など)、 <> を参照してください。 - - -[[addingNotes]] -== ノートの追加 - -*注意:* この節の内容は、Ankiにおける http://wikiwiki.jp/rage2050/?2.0%2FTheBasics#notes-and-fields[ノート、フィールド、カードテンプレート、ノートタイプ] がどういったものなのかを理解していることを前提としています。 -(訳注:特に「ノート」と「カード」がどう違うのかは重要です) - -新規ノートを追加するには、デッキリスト画面右下の「+」ボタンをタップし、「ノートを追加」をタップしてください。 - -++++++++++ - -++++++++++ - -ノート追加画面は、以下のような構成になっています。 - -ノート :: 追加したいノートのタイプを選択できます。大抵の場合は「Basic」ノートタイプで問題ないと思いますが、例えば、表と裏を逆にしたカードも合わせて生成したい場合には「Basic (and reversed card)」ノートタイプが使えます。 - -デッキ :: このノートから生成されるカードがどのデッキに入るのかを変更することができます。 - -フィールド :: デッキ選択プルダウンの下に、このノートのフィールドが表示されています(例えば、「Basic」ノートタイプの場合、「Front」と「Back」の二つのフィールドがあります)。フィールドをタップするとソフトウェアキーボードが表示され、文字を入力できるはずです。 - -メディアボタン :: それぞれのフィールドの隣にあるクリップマークのボタンです。ここから、ノートにメディアデータを添付することができます(この機能は現在のところ実験段階です)。「画像を追加」では、端末のカメラ(あれば)から、またはフォトライブラリーから画像を添付することができます。「音声を録音」では、端末の機能で音声を録音し、ノートに添付できます。「高機能エディター」を使うと、自動的に訳語や発音の音声ファイルをオンライン上で検索できます。 - -タグ :: タップすると、ノートにタグをつけたりはずしたりするためのダイアログを表示します。 - -カード :: 選択中のノートタイプで生成されるカードの名前を表示します。このボタンを押すとダイアログが表示され、そのノートタイプのカードテンプレートのソースコードを確認できます。ここでは、テンプレートの編集、プレビュー、追加、削除が可能です。カードテンプレートについてのさらに詳しい情報は、Ankiのマニュアルの http://wikiwiki.jp/rage2050/?2.0%2FCardsAndTemplates[カードとテンプレートの節] を参照してください。 - -入力が終了したら、アクションバー右側のチェックマークのアイコンをタップすると、実際に登録されます。あるいは、保存せずに元の画面に戻りたい場合、アクションバーのアプリアイコンをタップするか、端末の「戻る」ボタンを使ってください。 - -[[editingNotes]] -== ノートの編集 - -学習中に「編集」を選ぶか、カードブラウザで対象のカードの行をタップするとノート編集画面になります。編集画面は上述の新規ノートの追加画面と似ていますが、以下のような点で違いがあります。 - - * デッキの変更は、現在の選択中のカードテンプレート(「カード:」欄で下線つきで表示されています)のカードでのみ行われます。つまり、複数のカードがあるノートタイプの場合、現在選択中のカード以外のデッキは変更されません。 - * ノートタイプを変更すると、「ノートタイプ編集モード」に変わります。このモードでは、ノートの内容の変更(デッキの変更やフィールドの内容の書き換えなど)はできません。また、フィールドが三つ以上のカスタムノートタイプが関係している場合、それぞれのフィールドを新しいノートタイプのどのフィールドに対応させるかを選択するボタンが表示されます。 - -もし元のノートタイプよりもカードテンプレートの数が少ないノートタイプを選択した場合、前から順に、少ない方の数のカードテンプレートだけが保持されます。例えば、ノートタイプを「Basic (and reversed card)」(このノートタイプのカードテンプレートは「Card 1」と「Card 2」の2枚)から「Basic」(カードテンプレートは「Card 1」の1枚のみ)に変更した場合、一枚めのカード(「Card 1」のカード)だけが残り、二枚めのカード(「Card 2」のカード)は消えてしまいます。警告のため、この場合「カード:」欄の中は赤字で表示され、保存すときには確認のダイアログが表示されます。 - - ヒント: 複数のノートのタイプを一度に変更したり、カードの対応をカスタマイズしたりする場合、Ankiの「ノートタイプを変更」機能を使ってみてください。 - -また、アクションバーの「その他」ボタンをタップして表示されるメニューは次の通りです。 - -ノートの追加 :: 新しく空のノートを追加します。 -カードをコピー :: 現在のノートをコピーして、新しいノートの追加画面を開きます。 -学習進行状況をリセット :: 現在のカードを新規カードとして扱います。このカードをこれまで学習した情報(訳注:何回学習したか、そのつどどの評価回答ボタンを押したか、など)が消去されます。ただしカードの編集履歴は残ります。 -スケジュールを変更 :: 現在のカードを何日後に復習するかを設定できます。この機能は、ある程度学習したことのあるデッキをインポートし、始めから復習間隔を長く設定したい場合などに有効です。 - -[[browser]] -== カードブラウザによるカードの一覧、検索 - -<> で「カードブラウザ」をタップすると、カードの一覧表示や検索を行う画面が表示されます。 - -++++++++++ - -++++++++++ - -カードブラウザ画面を開いた時は、選択中のデッキ内のすべてのカードが表示されています。アクションバー右側の虫めがねアイコンをタップすると、選択中のデッキのカードから検索ができます。また、アクションバーのドロップダウンリスト(デッキタイトルが表示されている部分)から、どのデッキを(あるいはすべてのデッキを)選択するか指定することもできます。 - -初期設定では、カードブラウザの左側の列には、カードの質問(つまり表側)のテキストが表示され、右側の列には、カードの解答(つまり裏側)のテキストが表示されます。 - -左側の列は、より簡潔に表示するために、 http://wikiwiki.jp/rage2050/?2.0%2FAddingMaterial#customizing-fields[「ソートフィールド」]を表示するよう設定することもできます。右側の列は、様々な項目を設定することができます。これらは、列見出しをタップすると表示されるドロップダウンメニューで選択できます。 - -なお、各列の内容は、カードのリスト内をスクロールするつど動的に計算されて表示されます。 - -検索結果の一覧で、特定のカードをタップすると編集ができ(上記 <> を参照)、長押しするとメニューが表示されて以下の操作をすることができます。 - -ノートにマーク / マークを解除 :: 選択されたノートに「marked」(マーク付き)のタグをつけたり、はずしたりします。マーク付きノートのカードは紫色で表示されます。 -カードを保留 / カードの保留を解除 :: 保留されたカードは黄色で表示され、学習時に出題されなくなります。 -ノートを削除 :: 選択されたカードのノートを削除し、そのノートに属するすべてのカードも削除します。この操作は、 <> 以外に取り消す方法はありません。 -プレビュー :: 選択されたカードを、学習時に表示されるような形式で表示します。 - -=== 検索 - -AnkiDroidでも、Ankiで使うことができる検索形式をすべて使うことができ、複雑な検索に役立ちます。以下に例をいくつか示します。 - - tag:marked :: 「marked」のタグがついたカードを検索します。 - is:due :: 復習しなければいけない時期になっているカードを検索します。 - front:rabbit :: frontフィールドが「rabbit」であるカードを検索します。 - -利用可能な検索機能の一覧は、 http://wikiwiki.jp/rage2050/?2.0%2FBrowser#searching[Ankiのマニュアル] に記載されています。 - -また、よく使われる検索条件(マーク付き、保留、タグなど)については、キーボードで手入力しなくてもメニューから選んで使うこともできます。 - -[[filtered]] -== フィルターデッキ - -Ankiは、学習過程を最適化し、カードの大部分を覚えるために必要最小限の学習ですませられるように設計されています。「おめでとう」画面が表示されたら、それ以上学習を続けるとこの効率性をそこなうことになります。つまり、さらに時間を費して同じカードを何度も学習したとしても、大抵の場合、それ以降で適切に記憶を強化していく過程に比べるとたいした意味がないのです。 - -とはいえ、試験が迫っていたり、単にしばらく暇をつぶしたかったりする時に、「おめでとう」画面が表示されたあとも学習を続けることは可能です。 - -「フィルターデッキ」とは、「今日思い出せなかったもの」や「『難しい』タグがついたもの」など、いろいろな基準で集められたカードからなる一時的なデッキです。フィルターデッキで学習した後、あるいはフィルターデッキが削除されたら、含まれていたカードは自動的に元のデッキに戻されます。 - -フィルターデッキを作成する一番簡単な方法は、デッキリスト画面でデッキ名を長押しし、表示されたメニューで「カスタム学習」を選択することです。 - -AnkiDroidの操作に慣れてきたら、デッキリスト画面の「その他」メニューから「フィルターデッキを作成」を選ぶことで、手動でフィルターデッキを作成することもできます。 - -フィルターデッキについてのさらに詳しい情報は、 http://wikiwiki.jp/rage2050/?2.0%2FFilteredDecksAndCramming[Ankiのマニュアル] を参照してください。 - -[[AnkiDesktop]] -== Ankiとあわせて使う - -Ankiには、AnkiWebという無料の同期サービスがあり、デッキをモバイル端末とPCで簡単に同期しておくことができます。もし何かの理由でこの同期サービスが使えない場合、USB接続を使うこともできますが、そちらの方法のほうが手間がかかります。 - -注意:AnkiDroidはAnkiやAnkiWebの開発・管理には関わっていません。AnkiDroidはAnkiをもとに作られましたが、Ankiから完全に独立したコミュニティー(ボランティアユーザーの集まり)によって開発・管理されています。 - -++++++++++ - -++++++++++ - -=== クラウド経由の同期 - -AnkiWebを使う前に、まずアカウントを作成する必要があります(もし以前にAnkiWebを使ったことがあれば、飛ばしてください)。 https://ankiweb.net にアクセスし、「サインアップ」ボタンを押してください。AnkiWebにログインできたら、他端末内の既存のデッキのデータをAnkiDroidに入れたいのか、その逆にAnkiDroid内のデッキのデータをAnkiWebに出したいのかに応じて、以下の対応する説明に進んでください。 - -==== 新規にインストールしたAnkiDroidに既存のデッキを同期する -以前に作成したAnkiのデッキがあり、新規にインストールしたAnkiDroidにそのデッキをコピーしたい場合、AnkiWebでの同期によってそれを行うことができます。その既存のデッキが入っている状態でAnki(または、別のスマートフォンやタブレットで使っているAnkiDroid)を起動してください。次に、デッキリスト画面右上の同期ボタン(2つの矢印が回転しているアイコン)を押してください。 - -もしAnkiWebを使うのが初めてであれば、IDとパスワードの入力が必要になります。それから、「AnkiWebにアップロード」ボタンを押してください。AnkiWeb上の空のコレクションが、既存のデッキで上書きされます。Ankiはデッキ中のカードとメディアファイル(画像・音声・動画)を全てアップロードするので、メディアファイルがたくさんあれば、同期が完了するまで少し時間がかかるかもしれません。 - -データのアップロードが終了したら、既存のデッキのコピー先にしようとしている端末内のAnkiDroidを開き、<>画面のアクションバーにある「*同期*」ボタンをタップしてください。AnkiWebのIDとパスワードを入力すると、AnkiDroidはAnkiWeb上のすべてのカードとメディア情報をダウンロードし、アカウント情報を保存します。 - -もし、同期を実行する前にAnkiDroidにカードが存在している場合、AnkiWebからダウンロードするかAnkiWebにアップロードするかを選択するよう表示されるかもしれません。AnkiDroidに存在しているカードが消えてもいいという場合は、単に「ダウンロード」を選んでください。一方、AnkiWeb内のカード情報とAnkiDroid内のカード情報とを統合する必要がある場合は、操作を続行する前に <> の内容を理解しておくことを強くおすすめします。 - -最初の同期が完了したら、あとはいつでも好きなときに同期ボタンを押して、データの変更分をクラウドと同期することができます。前回同期した時点からの差分だけが送信されるので、二回目以降の同期はずっと速くなります。 - -また、その後でPCのほうで新規カードを追加して、それをAnkiDroidに同期したくなった場合、ここまでと同様に操作することになります。つまり、PC上でまず同期して(あるいは、単にAnkiを終了してもよいです。設定を変えていなければ、終了時に自動的に同期されます)、それからAnkiDroidで同期ボタンをタップするわけです。 - -==== AnkiDroidからPCに同期する - -AnkiDroidの側からPCに同期する場合も、基本的にはPCからAnkiDroidに同期する場合と同様の操作を行いますが、順番が逆になります。 - -まず <> で、右上の同期ボタンを押します(丸い二本矢印のボタンです)。もしAnkiWebを使うのが初めてであれば、IDとパスワードの入力が必要になります。それから、最初に「アップロード」ボタンを押して、明示的にAnkiDroid上のデッキをAnkiにアップロードします。 - -同期が完了したら、Ankiを開いて、右上の同期ボタン(円の中にふたつ矢印があるボタンです)を押してください。AnkiDroidからアップロードされたデータをダウンロードします。 - -[[AnkiWebConflicts]] -==== 同期で矛盾が生じた場合の処理 - -あまり起きるはずのないことですが、AnkiDroid上のデータを自動的にAnkiWeb上のデータと合成できないという場合があります。このような場合、矛盾が生じたデータについては、AnkiWebにアップロードするかAnkiWebからダウンロードするかを明示的に選ぶ必要があります。どちらを選んだ場合も、もう一方の側に元からあったデータは上書きされてしまいます。 - -また、もし同期する両方の側に新しいカードがあって、しかもどちらも消したくないような場合は、 <> を使った方法があります。まず先にAnkiDroidで新規カードの入っているデッキのエクスポートをしておき、それから同期して、「ダウンロード」を押してAnkiWebからダウンロードします(AnkiDroidのデータを上書きします)。同期が完了したら、先にエクスポートしておいたデッキをインポートすることができます。詳しくは <> を参照してください。 - -=== USB接続を使った同期 - -インターネットに接続できない場合でも、USB接続を使ってデッキを相互にコピーすることは可能です。 - -USB接続を使った方法では、全てのデッキを一度にまとめてインポート・エクスポートします。従って、AnkiWebを使った同期とは異なり、PCとAnkiDroidの両方でデッキを変更してその変更を合成する、といったことはできません。そうではなく、たとえばPC上で新しくカードを追加しようと思うなら、まず、モバイル端末上の最新の状態のデッキデータがPCにエクスポートされていることを確かめておかないといけません。そうでなければ、最後にPCにエクスポートした後で行なった学習や編集などに関する情報は、すべて消えてしまうことになります。 - -そこで、典型的な作業手順としては、まずモバイル端末のデータをエクスポートして、それをPCにインポートし、それからPCで何かの変更を行い、最後にデータを再びモバイル端末に戻す(PCからエクスポート、AnkiDroidでインポート)、というものになります。 - -なお、AnkiDroidは(訳注:Ankiと異なり)テキストファイルを直接インポートすることはできません。もしどうしてもそうしたければ、PC上で行ってからAnkiDroidにインポートする、という手順が必要になります。 - -==== Ankiのすべてのデッキを、USB接続でAnkiDroidにコピーする - -まずPCで次のように操作してください。 - - . Ankiを起動する - . メニューの、「ファイル」→「書き出す」を選ぶ - . 「書き出す...」ボタンをクリックする。このとき、「対象」が「全てのデッキ」になっていることを確認すること。AnkiDroidではデッキを個別にインポートすることはできない。また「スケジュール情報を含める」がチェックされていることも確認すること - . デスクトップにcollection.apkgというファイルが作成される。もし何か違う名前のようであれば、操作を間違えているので、前のステップに戻ること - . Android端末をUSBケーブルでPCに接続する - . PCのエクスプローラで、接続されたAndroid端末を開く - . AnkiDroidのフォルダを開く - . デスクトップのcollection.apkgを、開いたAnkiDroidフォルダにドラッグする - -それから、AnkiDroidで次のように操作してください。 - - . デッキリスト画面で、メニューから「インポート」をタップする - . 「collection」を選択する - -操作が完了すると、モバイル端末上のデッキは、すべてPCにあったもので置きかえられます。インポート機能についての詳しい説明は、 <> を参照してください。 - -==== AnkiDroidのすべてのデッキを、USB接続でAnkiにコピーする - -AnkiDroidからAnkiにデッキをコピーする操作は、基本的には上と同様ですが、順番が逆になります。 - - . モバイル端末のUSB接続は外しておく - . AnkiDroidのデッキリスト画面で、メニューから「エクスポート(書き出し)」を選ぶ - . 「スケジュールを含める」がチェックされていることを確認して、「OK」ボタンを押す - . 端末をUSBケーブルでPCに接続する - . AnkiDroidで表示されたフォルダにある「collection.apkg」を、PCのデスクトップにコピーする - . PC上でcollection.apkgをダブルクリックし、Ankiにインポートする - -AnkiDroidのエクスポート機能についてのさらに詳しい説明は、 <> を参照してください。 - -[[importing]] -== インポート - -Ankiのデータファイル(.apkg形式)は、AnkiDroidで直接インポートすることができます。それ以外の形式のファイルはAnkiDroidで直接インポートすることはできませんが、ほかの暗記カードソフトのデータの多くはAnkiでならインポートすることができ、それから<>ことが可能です。Ankiでのインポートについては、 http://wikiwiki.jp/rage2050/?2.0%2FImporting[Ankiのマニュアルの「インポート」の節] を参照してください。 - -Ankiと同様に、AnkiDroidにおいても http://wikiwiki.jp/rage2050/?2.0%2FExporting#exporting-packaged-decks[二種類の.apkg形式ファイル] を、ファイル名に基づき区別して扱っています。"collection.apkg"という名前であれば「コレクションパッケージ」と見なされ、AnkiDroidでインポートすると、**既に存在するすべてのデータを置きかえます。**"collection.apkg"**以外の**名前のapkgファイルはすべて「デッキパッケージ」として扱われ、AnkiDroidでインポートすると**既に存在するデータと合成されます。** - -通常のAndroidの操作で.apkg形式のパッケージファイルを開くと、そのままAnkiDroidにインポートされます。あるいは、AnkiDroidの中で手動でインポート操作をすることもできます。 - -=== パッケージファイルを開く - -apkgファイルは自動的にAnkiDroidと関連づけられています。そこで、例えば自分宛てにapkgファイルを添付したメールを送ってその添付ファイルを開くと、AnkiDroidが自動的に起動し、インポートするか確認を求めてきます。「OK」を選ぶだけで、そのapkgファイルの内容がインポートされます。(訳注:ファイルマネージャーアプリの類を使っても便利だと思います) - -=== AnkiDroidで手動でファイルをインポートする - -次のような手順で、手動でapkgファイルをインポートすることもできます。 - - * 端末をUSBケーブルでPCに接続する - * apkgファイルを、PCから端末のAnkiDroidフォルダにコピーする - * AnkiDroidを起動する - * デッキリスト画面のメニューから、「インポート」を選ぶ - * コピーしたapkgファイルを選択する - * 「OK」をタップ - -[[exporting]] -== エクスポート - -AnkiDroidでは、デッキを.apkg形式でエクスポートして、Ankiでインポートしたり他の人と共有したりすることができます。Ankiと同様に、目的に応じて http://wikiwiki.jp/rage2050/?2.0%2FExporting#exporting-packaged-decks[コレクションパッケージかデッキパッケージ] のいずれかの方式でエクスポートすることができます。 - -エクスポートにあたっては、「スケジュールを含める」「メディアを含める」のふたつのオプションがあります。通常は既定のままで問題ありません。なお「スケジュールを含める」をオフにした場合、AnkiDroidはエクスポートしたファイルを他の人と共有するつもりだと推定して、「marked」(マーク付き)と「leech」(訳注:Ankiのマニュアルで「無駄カード」と書かれているもの)のタグを消して綺麗な状態にしてからエクスポートします。 - -=== コレクションパッケージのエクスポート - -Ankiで使うためにエクスポートする場合、普通はすべてのデッキを、学習履歴情報なども含めてデータ全体をエクスポートすると思います。 - -デッキリスト画面で、次のように操作してください。 - - . メニューから「エクスポート(書き出し)」を選ぶ - . オプションは変更せずに「OK」を押す - . もう一度「OK」を押してcollection.apkgファイルを自分自身宛てにメールするか、USB接続を使って手動でファイルをPCにコピーする - -エクスポートされたファイルをPCでインポートするには、 - - . collection.apkgファイルをデスクトップに置く - . ファイルをダブルクリックする。Ankiが起動する - . このインポート操作で、「PC上に既に存在しているデータは、すべてモバイル端末から持ってきたデッキデータで置きかえられる」ということを確認する - . インポートの後は、デスクトップのapkgファイルは消しても問題ない - -=== デッキパッケージのエクスポート - -デッキを他のユーザーと共有したい場合などに、デッキパッケージをエクスポートすることができます。 - -デッキリスト画面で、次のように操作してください。 - - . エクスポートしたいデッキを長押しする - . 「エクスポート(書き出し)」をタップ - . オプションは変更せずに「OK」を押す - . もう一度「OK」を押すと、他のユーザーにメールでエクスポートされたapkgファイルを送ることができる - -[[backups]] -== 自動バックアップ - -AnkiDroidは、自動的にデータのバックアップを作成しています。バックアップには、カードすべてと統計情報が含まれますが、音声や画像ファイルは含まれません。 - -最初に起動したとき、バックグラウンド処理でバックアップが作成されます。その後は、最後にバックアップが作成されてから5時間以上過ぎていれば、新しいバックアップが作成されます。最初、AnkiDroidでは最新の8つのバックアップが保存されるようになっています。この数は設定で変更できます。 - -デッキリスト画面で、メニューから「バックアップから復元」を選ぶと、バックアップからデータを復元することができます。 - -[[settings]] -== 設定 - -ドロワーメニューを開いて「設定」を選ぶことで、設定画面に行けます。ここで各種動作設定や、表示や外観の設定ができます。 - -設定画面は、以下で説明するようにいくつかのセクションに分かれています。 - -=== AnkiDroid - -このセクションでは、アプリ全体の動作に影響する設定を行います。 - -コレクションの保存先 :: AnkiDroidのデータが保存されるフォルダを変更します。 - -AnkiWebアカウント :: クラウド同期で使うアカウントを変更します。同期に関する詳しい情報は、 <> を参照してください。 - -メディアの同期 :: 初期状態では、AnkiDroidはカードや学習履歴に加えて音声や画像も同期します。このオプションをオフにすると、音声や画像などは同期されなくなります。 - -自動同期 :: このアプリを起動する時・終了する時に自動的に同期したい場合は、この機能を有効にしてください。過去10分以内に同期が行われていない場合に、同期が行われます。同期が開始されてからキャンセルするには、デバイスのバックボタンをタップしてください。ただし、キャンセルが完了するまでやや時間がかかることがあります。 - -同期のタイミングについて、よりきめ細かく設定したい場合は、例えば Tasker のような、自動同期のためのサードパーティーアプリを使うとよいかもしれません。詳細は、 https://github.com/ankidroid/Anki-Android/wiki/AnkiDroid-API#sync-intent[API documentation] を参照してください。 - -新規カードの追加先 :: 初期値の「選択中のデッキ」になっている場合、それぞれのデッキの最後に使われたノートタイプが記憶され、次にデッキを選択したときにも同じタイプが使われます(さらに、どこで「追加」操作をした場合でも、追加画面では現在開いているデッキが選択された状態になります)。もう一方の「ノートタイプから選択」の場合は、逆にそれぞれのノートタイプについて最後に使われたデッキが記憶され(、「追加」するときには最後に使われたノートタイプで追加画面を開き)ます。後者は、それぞれのデッキで個別のノートタイプを使っている場合に便利です。 - -言語 :: アプリで使う言語を変更します。なお、AnkiDroidの翻訳はボランティアによって行なわれています。もし訳の欠けや間違いにお気付きのときは、翻訳プロジェクトにご連絡お願いします。詳しくは https://github.com/ankidroid/Anki-Android/wiki/Contributing#translate-ankidroid[AnkiDroid Wiki] をご覧ください。 - -エラーの報告 :: AnkiDroidがクラッシュし、エラー報告システムが報告を送ろうとしたときに確認を求めるかどうかを設定します。もしお望みなら、エラー報告システムを完全に無効にすることもできます。 - -==== 通知 - -このサブセクションでは、AnkiDroridが通知バーに表示する通知について設定できます。 - -通知のタイミング :: 「通知しない」を選ぶと、AnkiDroidからの通知を一切行いません。「待受状態(AnkiDroidを表示していない間に進行していたデータ処理(例: 同期、バックアップ)が完了し、ユーザーが操作を再開できる状態)」は、同期の完了時など、状態の重要な変化を通知します。「待受状態の時と、 課題のカードが*枚を超えている時」は、待受状態の時と、課題のカードが一定数を超えた時に通知します(ウィジェットを有効にする必要があります)。 - -振動で通知 :: チェックを入れると、通知が出たときに端末が振動します。 - -ライト点滅で通知 :: チェックを入れると、未読の通知があるときにライトが点滅します(端末に通知LEDがあれば)。 - -=== カードの復習と評価 - -このセクションでは、カード学習画面での動作を設定できます。なお、ここでは、**すべてのデッキ**に影響する設定だけが扱われることにご注意ください。学習画面での動作には、**デッキごとに**設定できるオプションもあり、**デッキ概要画面のデッキオプション**から設定することができます。 - -新規カードの追加場所 :: 学習時に、新規カードがいつ表示されるかを設定します。復習カードと混ぜるか、復習カードの後にまとめるか、復習カードの前かです。 - -日付更新の時刻 :: 次の日に学習することになっているカードが、何時から表示されるようになるかを設定します。既定値は「4時」になっていますが、これはたとえば、夜中0時近くに勉強していても、一度の学習で二日分のカードが表示されるのを避けることができます。もっと遅く寝る人や早く起きる習慣の人は、いつも寝る時間の少し後ぐらいに設定しておけばよいでしょう。 - -先取り学習の限度(分) :: ここで設定した時間は、選択中のデッキに、その日に学習すべきカードが残っていない場合の動作に影響します。既定値の「20分」の場合、他に学習すべきものがない場合に限り、学習予定まで20分以内のカードも先取りして表示するようになります。もしここの値を0に設定した場合、必ずそれぞれのカードの学習予定時刻まで待つようになり、学習するカードが出てくるまで「おめでとう」画面を表示し続けます。 - -タイムボックス時間制限 :: 「タイムボックス」とは、比較的長めの学習(例えば30分間)をより短い時間に分割して考えることで、集中を助ける方法です。タイムボックス時間制限をゼロ以外の数に設定すると、AnkiDroidは定期的にメッセージを出し、設定された時間内に何枚のカードを学習したかを表示するようになります。 - -==== 画面表示 - -このサブセクションには、学習中の表示方法に関する設定があります。 - -画面を保持 :: Androidシステムのスリープ設定を無視して、画面をオンのままにします。 - -フルスクリーン モード :: 画面をより広く使うことができるように、Immersive(没入)フルスクリーンモードに切り替えることができます。「ステータスバー(通知バー)を隠す」では、Androidシステムのステータスバー(通知バー)、アクションバー、底部のナビゲーションボタンを隠します。もう一方の、「ステータスバー(通知バー)と解答表示ボタン・回答ボタンを隠す」では、カードの内容それ自体だけを表示し、以外の全てを隠します。ステータスバーが隠れている部分を画面内側(下方向または上方向)にスワイプすると、フルスクリーンモードが一時的に解除されます。 - -注:Immersive フルスクリーンモードはAndroid4.4以上のバージョンでのみサポートされています。 - -中央揃え :: AnkiDroidは、基本的にはAnkiと同じようにカードを表示しようとします。しかし、もしAnkiDroidでは縦方向に中央揃えになっているというほうが良ければ、この機能を使ってください。 - -ボタン上に時間を表示 :: 初期状態では、学習中の評価ボタンには、それぞれのボタンを選んだときに同じカードが次にいつ学習に入るか表示されています。このチェックをオフにすると、時間は表示されなくなり、「もう一度」「難」「普通」「簡単」という自己評価用の基準だけが表示されるようになります。 - -カードの拡大・縮小 :: カードの内容(画像以外)の表示を拡大・縮小することができます。全てのカードのフォントサイズを一律に拡大・縮小したい場合にこの機能を使ってください。 - -画像の拡大・縮小 :: 全てのカードに埋め込まれた画像を一律に拡大・縮小することができます。 - -解答ボタンのサイズ :: 「解答を表示」などのボタンが小さすぎて押しにくい場合、ここの値を大きく設定してください。 - -残りのカード枚数を表示 :: ここをオフにすると、画面左上のカードの枚数が表示されなくなります。 - -==== ホワイトボード機能 - -このサブセクションでは、学習中のホワイトボードの設定をします。なお、ホワイトボードはデッキごと個別に、学習画面のメニューから有効化する必要があります。 - -線の太さ :: ホワイトボードで描くときの線の太さを設定します。細くしたほうが、細かい部分が書きやすくなるかもしれません。 - -黒色の線 :: 色のついた線ではなく、黒の線を描くようになります。多少メモリの節約になる場合があります。なお、ナイトモードを使用中は、この設定は無視されます。 - -==== 解答自動表示 - -解答自動表示機能を使うと、一定時間後に解答を自動的に表示することができます。さらに、次の質問を自動で表示することもできます。この場合、答を思い出せなかったものとして扱われます(すなわち、「もう一度」ボタンを押したのと同じことになります)。 - -答が自動で表示されるまでの時間と、次の質問が自動で表示されるまでの時間が設定できます。 - -=== フォント - -ここでは、AnkiDroidで使うフォントが変更でき、また各種表示倍率も設定できます。独自のフォントを使う方法については、詳しくは <> を参照してください。 - -標準フォント :: AnkiDroidの学習画面で使われるフォントを選択できます。"fonts"フォルダにフォントファイルをコピーしておくことで、ここで表示される選択肢に追加できます。 - -標準フォントの適用範囲 :: 何も設定していない場合、「標準フォント」で設定したフォントは、Ankiでカードのスタイルに特定のフォントを指定していない場合にだけ使われます。しかし、カードのスタイル指定を無視して、標準フォントを強制的に使うように設定することも可能です。 - -ブラウザとノート編集のフォント :: ブラウザと「ノートを編集」の画面で使われるフォントを指定します。 - -ブラウザ用フォントサイズ調整 :: ブラウザでの表示フォントサイズを変更できます。 - -[[gestures]] -=== ジェスチャー - -AnkiDroidでは、操作法をカスタマイズして、よく使う操作はタップ・スワイプといったジェスチャーですばやく呼び出せるようにすることができます。 - -==== アクション - -以下のようなジェスチャーに機能を割りあてることができます。 - - * 上にスワイプ - * 下にスワイプ - * 左にスワイプ - * 右にスワイプ - * ダブルタップ - * 上をタップ - * 下をタップ - * 左をタップ - * 右をタップ - -それぞれのジェスチャーには、以下のような動作が割りあてられます。 - -何もしない :: 何もしません。そのジェスチャーを無効にするときに使います。 - -答えの表示 :: 問題が表示されているときに、答を表示します。 - -回答ボタン1 :: 答が表示されているときに、赤字のボタンを押して「すぐ復習する」と評価する動作です。問題が表示されている場合にこの操作をすると、単に答が表示されます(下記の、他の回答アクションでも同様です)。 - -回答ボタン2 :: 答が表示されているときに、左からふたつ目のボタンを押して「思い出すのが難しかった」と評価する動作です。 - -回答ボタン3 :: 答が表示されているときに、左から三つ目のボタンを押す動作です。 - -回答ボタン4 :: 答が表示されているときに、左から四つ目のボタンを押す動作です(四つ目がある場合)。 - -推奨する答え(緑色) :: 答が表示されているときに、緑字のボタンを押す動作です。 - -推奨された答えよりも良い答え :: 答が表示されているときに、緑字のボタンの右側のボタンを押し、「とても簡単だから復習間隔はもっと長くていい」と評価する動作です。 - -戻す :: 最後に行った操作を元に戻します。 - -カードを編集する :: 現在のカードを編集します。 - -マークをつける :: 後で探しやすいように、現在のノートに「marked」(マーク付き)のタグをつけます。 - -検索式 :: 拡張機能設定で辞書検索機能が有効にされている場合、辞書で検索を行います。なお、この機能を使う前に、検索内容をクリップボードにコピーしておく必要があります。 - -カードを延期 :: 現在のカードの学習を一旦延期します。デッキリストに戻ると、そのカードはもう一度学習予定に入ります。 - -カードを保留 :: カードに保留タグをつけ、ブラウザでタグをはずすまでは学習中に出てこないようにします。 - -ノートを削除 :: 現在のノートと、そのノートに属するカード全てを削除します。裏→表のカードも自動生成されるデッキを使っているのでなければ、おそらく削除されるカードは一枚でしょう。 - -メディアを再生 :: カードに添付されている音声を再生します。 - -学習を中断 :: 学習を中断し、デッキ概要画面に戻ります。 - -ノートを延期 :: 表示中のカードと関連カード(同じノートから作られたカード)の学習中の表示を延期します。つまり、翌日まで学習中に表示されなくなります。 - -ノートを保留 :: 表示中のカードと関連カード(同じノートから作られたカード)が学習中に表示されないようにします。つまり、あなたが保留を解除するまで、学習中に表示されなくなります。 - -=== 拡張機能 -慣れた利用者向けの、頻繁には使わないような機能についての設定です。 - -コレクションの保存先 :: AnkiDroidのデータが保存される場所を変更します。(お勧めしません。) - -完全同期を強制する :: 次回の同期で、強制的にすべてのデータをアップロード、あるいはダウンロードしたい場合、ここをタップしてください(例えば、片方の側でうっかり間違ってデッキを削除してしまい、この削除操作を同期するのではなく、もう一方の側に残ったデータから元に戻したい場合など)。 - -保管するバックアップの世代数 :: バックアップをいくつ保存しておくかを設定します。 - -==== 回避策 -カード内にキーボード入力で解答する :: -解答をキーボード入力で行うよう設定(詳しくは、 http://wikiwiki.jp/rage2050/?2.0%2FCardsAndTemplates#checking-your-answer[Ankiのマニュアルのこの項]を参照してください)しているカード内に、テキスト入力ボックスを表示します。 - -ホワイトボード機能やジェスチャー機能を使っている時のユーザーエクスペリエンスを向上させるために、AnkiDroidではテキスト入力ボックスとカードを別々に表示していますが、これはAnki上での表示方法とは異なります。 - -Anki上での表示方法と一致させたい場合はこのオプションを有効にしてください。画面の領域を無駄なく使えますし、テキスト入力ボックスで適切なフォントを選ぶこともできます。 - -回避方法を入力(※) :: 一部の古い端末で、テキスト入力欄にフォーカスがあたらなくなる問題を修正します(※Android 4.0.3以降では表示されません)。 - -長押しの回避策(※) :: 一部の古い端末で、テキスト選択やコピーをするときに長押しが効かなくなる問題を修正します(※Android 3.0以降では表示されません)。 - -ヘブライ語母音への対応(※) :: 一部の古い端末ではヘブライ語が正しく表示できないので、ヘブライ語フォントをダウンロードし、それを使って表示します。(※API 15以降では表示されません) - -音声合成 :: カードに書かれている文章をAndroidの音声合成機能を使って発音させる場合、このオプションをオンにしてください。プリインストールされているGoogleの音声合成エンジンで動作するはずです。その他の製作者による音声合成エンジンは、動くものと動かないものがあると思われます。それぞれのデッキの学習を初めて行うときに、AnkiDroidがそのデッキのカードは表と裏がそれぞれ何語で書いてあるか聞いてきます。この言語設定を変更する、あるいは特定のデッキで音声合成をやめるという場合は、この下にある「言語設定のリセット」オプションを使い、デッキの言語設定をしなおす必要があります。 - - この機能は、将来的に廃止され、別個にダウンロードできるプラグインに変わる可能性があります。 - -検索辞書 :: 学習中、クリップボードにコピーした単語を調べるための辞書を設定します。辞書の設定がすんだら、次のようにすると辞書を使った検索ができます。 - - . 学習画面で、コピーしたい部分のあたりを長押し - . コピーしたい部分を選択し、アクションバーの「コピー」をタップ - . カードのどこかを一回タップ - . 虫めがねのアイコンが右上に表示されるので、それを押すと検索実行 - -あるいは、この検索操作をジェスチャーに設定しておくこともできます。 - - この機能は、将来的に廃止され、別個にダウンロードできるプラグインに変わる予定です。 - -言語設定のリセット :: 音声合成の言語設定をリセットするために使います。 - -eReader :: eReaderのハードウェアボタンによる操作をサポートします( https://github.com/ankidroid/Anki-Android/issues/1625[issue 1625] を参照してください。)。 - - この機能は、将来的に廃止され、別個にダウンロードできるプラグインに変わる予定です。 - -ダブル スクロール :: eReaderのハードウェアボタンでのスクロール量を二倍にします。 - - -== 高度な機能 - -[[reverseCards]] -=== 反転カード - -Ankiシステムには、 http://wikiwiki.jp/rage2050/?2.0%2FTheBasics#note-types[表→裏だけではなく裏→表の学習にも対応したノートタイプ] が、あらかじめ用意されています。AnkiDroidで <> ときには、「Basic (and reversed card)」のような、この種のノートタイプのうちどれかを選択すれば、逆向きの学習用のカードも同時に生成されます。 - -++++++++++ - -++++++++++ - -もしカードを追加するときに間違ったノートタイプを選んでしまっていても、<>でノートタイプを変更することができます。また、Ankiのブラウザを使うと、複数のカードのノートタイプを一度に変更することができます。まず <> の説明に従って、デッキをPCに移してください。次にAnkiでブラウザを開いて、必要なカードをすべて選択し、メニューから「編集」→「ノートタイプを変更...」を選んでください。 - -使用中のカードがカスタムノートタイプを使っていて、それに反転カードが入っていない場合は、反転カードを含むようノートタイプを編集することもできます。 http://wikiwiki.jp/rage2050/?2.0%2FCardsAndTemplates#reverse-cards[Ankiのマニュアルの「反転カード」の節] の説明に従って作業を進めてください。Ankiを使うよりも手間がかかりますが、AnkiDroidでもノートタイプを編集することができます。詳細は、<> の項を参照してください。 - -[[customFonts]] -=== カスタムフォント - -AnkiDroidでは、カードを表示するにあたり、Androidシステムに塔載されているものとは別のフォントを利用することができます。適切に設定するためには、Ankiを使うことを強くおすすめします。詳しくは http://wikiwiki.jp/rage2050/?2.0%2FCardsAndTemplates#installing-fonts[Ankiのマニュアルの当該の節] を参照してください。 - -あるいは、AnkiDroidフォルダ(設定 → AnkiDroid → コレクションの保存先)の中に"fonts"という名前のフォルダを作成し、そこへttfフォントファイルをコピーして、設定 → フォント → 標準フォント でコピーしたフォントをデフォルトに設定することもできます。ただし、この方法は、Ankiを使った方法よりも不安定であり、複数の端末で学習する場合には不整合が起きるかもしれません。ご注意ください。 - -AnkiとAnkiDroidでは、ttf形式のフォントだけが公式に使えることになっています。 https://www.google.com/get/noto/#/[Google Noto] フォントはすべての言語についておすすめできますし、 https://github.com/ankidroid/Anki-Android/wiki/Freely-distributable-fonts[こちら] でフリーのフォントを探すこともできます。 - -AnkiDroidでは、外部のフォントを使うときはその全体をメモリに読みこんでいます。アジア圏の言語のフォントはかなりサイズが大きいことに注意してください。古い端末でAnkiDroidを使っていて、フォントをインストールしてからAnkiDroidが頻繁にクラッシュするようになった場合、端末のメモリが不足しているのかもしれません。(訳注:日本で現在普通に使われている端末では、あまり心配しなくてもよいと思います) - -*注意その1:* 設定で「メディアの同期」をオフにしている場合、PCからAnkiDroidのcollection.mediaフォルダにフォントファイルを手動でコピーする必要があるかもしれません。 - -*注意その2:* この説明やAnkiのマニュアルの通りにしてもフォントが正常に機能しない場合、 FAQの https://github.com/ankidroid/Anki-Android/wiki/FAQ#i-followed-the-instructions-in-the-manual-but-i-still-cant-get-my-custom-font-to-work[フォントに関する問題を解決するための詳細なステップ]を参照してください。 - -*注意その3:* カスタムフォントの機能は、Android 2.1では通常動作しません。これはAndroidシステムの制限であり、AnkiDroidにはどうしようもない問題です。 - -[[customizingCardLayout]] -=== カードレイアウトのカスタマイズ - -カードのレイアウトは完全に自由に設定することが可能ですが、その方法を習得するのはそう簡単ではありません。また、おそらくそういったカスタマイズは、 <> を使って行うほうがずっと楽でしょう。 - -http://wikiwiki.jp/rage2050/?2.0%2FCardsAndTemplates[Ankiのマニュアルの「カードとテンプレート」の節] には、具体的にどのようにカスタイマイズを行うか説明があります。そこに記載された操作のほとんどはAnkiDroidでも「ノートの編集」画面の一番下の「カード:~」をタップするか、デッキリスト画面の「その他」ボタンから「ノートタイプの管理」をタップして行うことができます。カードレイアウトのカスタマイズについての詳細な情報はAnkiのマニュアルに記載されていますので、ここでは割愛します。 - -AnkiDroidのWiki内の https://github.com/ankidroid/Anki-Android/wiki/Advanced-formatting[advanced formatting page] には、カードのフォーマットを最大限活用するための様々なヒントが書かれているので、読んでみることをお勧めします。また、あなたがAnkiDroidコミュニティーで共有したい便利な方法があれば、自由に書き込んでください。 - -[[typeInAnswer]] -=== 解答を入力する - -AnkiDroidでは、答を(頭で想起するだけではなく)入力し、正解と比較するという使いかたもできます。このためには、 http://wikiwiki.jp/rage2050/?2.0%2FCardsAndTemplates#checking-your-answer[Ankiのマニュアル] の記述に従って、PC上で設定しておく必要があります。 - -Ankiは、カード表面の `{{type:フィールド名}}` (例: `{{type:Back}}` ) というフィールドは入力欄として表示します。AnkiDroidでは、このフィールドは“......”と表示され、画面下に文字入力欄を表示します。解答面を表示するときには、Ankiと同様に、 `{{type:フィールド名}` フィールドの部分には入力されたテキストと正解のテキストの比較が表示されます。 - -テキスト入力欄とソフトウェアキーボードは、設定で「タイピング無効化」を設定している場合には表示されません。 - -「タイピング無効化」が設定されている場合でも、解答面を表示するときに正しい答は表示されます。そうしないと正解が全く表示されなくなってしまうからです。 - -比較表示を隠す(いずれにせよ正解は表示されますので)ためには、`typeans` というHTML ID属性を使うこともできます。Ankiを使い、 http://wikiwiki.jp/rage2050/?2.0%2FCardsAndTemplates[カードのスタイル] に `.mobile #typeans {display: none;}` を追加してください。 - -解答入力欄とプロンプト(“......”)、比較表示には、ほかにも表示形式を変えるのに使うことがあるクラスがあります。一部はAnkiと共通ですが、AnkiDroid特有のものも存在します。 - -比較表示には、`typeGood`、`typeBad`、`typeMissing` の三つのクラスがあり、それぞれ比較表示に緑、赤、灰色の背景をつけるために使われています。この三つのクラスは、Ankiでも同様に使われています。 - -プロンプト(“......”)には、 `typePrompt` というクラスが設定されています。 - -設定で解答の入力機能が無効にされているときは、 `typeOff` クラスが問題面のプロンプトと、解答面の比較表示を含むdiv要素に設定されています。このクラスは、プロンプトを表示したり比較表示を隠したりするのに使うことができます。 - -[[betaTesting]] -=== ベータテスト - -AnkiDroidの最新の機能を試してみたいと思ったら、次のようにしてベータテストに参加できます。 - - . https://play.google.com/apps/testing/com.ichi2.anki[Google Playのベータページ] にアクセスする - . 「Become a beta tester」をクリックする - -ベータテストに参加すると、通常のアップデートと同じように、最新のベータ版が自動的にGoogle Playからインストールされるようになります。さらに勇敢な方は、上記の手順でベータテストに参加することに加えて、 https://groups.google.com/forum/#!forum/ankidroidalphatesters[アルファテスターグループ] に参加することも可能です。 - -ベータ版・アルファ版でバグを発見された場合は、ぜひ、 link:help-ja.html[ヘルプ]の説明に従って、AnkiDroidの問題管理システムにご報告ください。 - -ベータテストに参加したとしても、いつでも参加を終了することができます。 https://play.google.com/apps/testing/com.ichi2.anki[Google Playのベータページ] にアクセスし、「Leave the test」をクリックするだけでOKです。 - -[[contributing]] -== AnkiDroidの開発に貢献する - -AnkiDroidはオープンソースプロジェクトであり、開発は有志のユーザーの貢献によるものです。AnkiDroidプロジェクトに貢献する方法をいくつか紹介します。 - -ユーザーとして :: アプリを評価したり、 https://groups.google.com/forum/#!forum/anki-android[AnkiDroidフォーラム] に参加したり、他のユーザーの質問に答えたり、バグ報告をしたり、 <> になったり、といった貢献方法があります。アプリ開発者ではなくユーザーとして貢献する方法についての詳細な情報については、 https://github.com/ankidroid/Anki-Android/wiki/Contributing[Wiki] を参照してください。 - -翻訳 :: AnkiDroidのインターフェースやマニュアルの翻訳はすべてユーザーによって行なわれており、開発チームは大変感謝しています。翻訳作業に協力する方法については、Wikiの https://github.com/ankidroid/Anki-Android/wiki/Contributing#translate-ankidroid[translating] のページを参照してください。 - -開発 :: AnkiDroidのソースコードは https://github.com/ankidroid/Anki-Android[GitHubのページ] で公開されており、新機能の開発やバグ修正は大歓迎です。なお、新機能についてあれこれ長い時間を費す前には、まずフォーラムで、その機能はAnkiDroidで採用できそうか質問してみたほうがよいかもしれません。新しい機能ならなんでも採用するというわけではないからです。もしAndroidプログラミングを始めたばかりであれば、ちょっとしたヒントや、初心者向けのタスクについてフォーラムで質問してみてください。 diff --git a/manual-zh-CN.asc b/manual-zh-CN.asc deleted file mode 100644 index 1d60300..0000000 --- a/manual-zh-CN.asc +++ /dev/null @@ -1,795 +0,0 @@ -:docinfo1: -:toc: - -= AnkiDroid 2.14 User Manual -:sectanchors: - -== 介绍 - -感谢你使用AnkiDroid, -这是流行的http://ankisrs.net/[Anki]间隔复习软件的android客户端. - -AnkiDroid通常和你桌面版的Anki结合起来使用. 当然,没有桌面版的它可以单独使用, -一些任务仅仅是可能实现,但是用桌面版的Anki实现起来效率会更高. 另外, 强烈建议,在理解这里谈到的术语之前至少要阅读Anki手册的 http://ankisrs.net/docs/manual.html#the-basics["基础"]部分. - -如果手册中没有包含你寻找的内容, 请查阅 https://github.com/ankidroid/Anki-Android/wiki[AnkiDroid维基百科] , 它将提供一个变更列表,内容包含提交的bug报告,功能要求,以及常见问题解答等等. - -[[开始使用]] -== 开始使用 -要开始使用AnkiDroid, 我们需要添加一些卡片去学习. 在主屏幕中, 点击右下角的“+”号按钮,系统将允许你添加一个新的笔记,或是下载共享牌组,或是创建一个新的牌组. - -请观看5分钟的 https://www.youtube.com/watch?v=F2K1gOSdIZA[教程视频], 它将告诉你如何在AnkiDroid中添加,下载,以及学习卡片. 更多细节你可以从下面内容获取. - -如果你已经是Anki桌面版的用户,想从电脑中把牌组导入AnkiDroid , -你可以直接跳到 <> 这部分. - -[[牌组选择]] -== 牌组列表 -*_注意:_* 本节开始假设你已经明白什么是 http://ankisrs.net/docs/manual.html#the-basics[牌组和卡片] - -打开AnkiDroid你看到的第一个屏幕就是牌组列表. -它包含你所有卡片的所有牌组,并允许你在此对看到的牌组进行多种操作: - -++++++++++ - -++++++++++ - -=== 添加按钮 -右下角的加号按钮用来向AnkiDroid中添加新的学习材料,点击它将展开有三个选项的菜单,在link:https://www.youtube.com/watch?v=F2K1gOSdIZA[视频教程]对此有详细描述。 - -添加 :: 如果你想通过AnkiDroid来创建自己的卡片(笔记)请点击这个选项,“卡片”和“笔记”在Anki中有特别的含义,他们在link:http://ankisrs.net/docs/manual.html#the-basics[Anki手册]中有详细解释,请观看添加笔记和卡片的视频教程,了解详细信息请参阅下面<>部分. - -获取共享牌组 :: 从互联网上下载其他用户贡献的牌组 - . 确保你能连接上Inernet网. - . 点击 + 然后 *获取贡献牌组*. AnkiWeb网页将打开. - . 在搜索栏敲入你需要的类别. - . 在你你喜欢的牌组哪一行的后面,点击*Info*. - . 滚动到页面下方,然后点击*Download*. - . 你的浏览器将开始下载这个文件,下载完成,浏览器将给你“下载完成”的提示信息. - 点击提示信息. - . AnkiDroid将出现,并且显示确认对话框,点击“添加”按钮. - . 导入完成之后,这个牌组就准备好可以开始学习. - -创建牌组 :: 创建一个新的空的牌组 - . 点击 + 按钮,并选择“创建牌组” - . 为新牌组选择一个名字,例如叫“新日语” - . 依照上面的添加说明开始添加卡片 - -=== 活动栏 -每个AnkiDroid屏幕的上面都有一个活动栏,它上面设置有很多按钮,用来执行各种不同的操作。 -在牌组列表屏幕上的活动栏有以下功能: - -导航菜单按钮 :: 点击最左侧的图标将显示导航菜单<> 它将使你可快速在app的主要窗口间切换. - -同步按钮Sync button :: 右侧的循环箭头按钮用于将你的卡片与云端同步,具体参看 -<> 这个部分的描述. - -下拉菜单按钮 :: 最右侧是个下拉菜单按钮,它包含了一些不不常用的操作,这些操作在随后的部分将会具体描述. - -**Hint:** 长按导航栏上的任意一个按钮,应用将弹出一个小文本框,告诉用户这个按钮的用途! - - -=== 学习一个牌组Studying a Deck -要学习一个牌组内的卡片,轻轻点击牌组的名字(如果你用的是10英寸的平板电脑,点击“学习”),AnkiDroid将切换到学习模式. - -注意,当前选中的牌组将以灰色背景显示为高亮模式;如果你有过滤的牌组<> 这些牌组的字体将显示成蓝色。至于过滤牌组,Anki手册中有详细描述。 - -=== 其他的牌组操作 -长按一个牌组,将显示一个操作列表,用来操作当前牌组,所列的操作有: - -重命名牌组 :: 点击这个选项,可对当前牌组重新命名; - -牌组选项 :: 点击牌组选项,你可以对当前牌组的学习选项进行配置; -了解更多学习选项配置,可参阅Anki手册中的学习选项 http://ankisrs.net/docs/manual.html#deckoptions[desktop documentation] 学习选项。 - -自定义学习 :: 允许你在完成当天的学习计划任务后选择一个预设的选项来增加学习任务,例如增加增加每天的学习上限,了解更多相关信息请参阅 <> 这个部分. - -删除牌组 :: 使用这个选项可删除当前牌组(注意:这个操作是不可逆转的,尽管有一个恢复的选项, although you can <>) - -导出牌组 :: 这个选项可用与其他用户分享牌组,了解更多信息请参阅 <> 这个部分. - -取消搁置 :: 这个选项只有当前的牌组包含有已经被手动或自动搁置的卡片时才会显示出来。 - -重新创建 / 清空 :: 如果你选择的是一个过滤牌组<> 那么你将有有这个选项去重新创建或是清空当前牌组. - - -==== 在牌组上可点击的区域 -列表上的每一个牌组都有三个可以点击的区域: - -展开子牌组 :: 如果你正在使用 link: -http://ankisrs.net/docs/manual.html#decks[子牌组], 子牌组的展开键会显示在这个牌子的左侧,它可以用来显示和隐藏子牌组。一个 ▶ 图标意味着当前牌组有隐藏的子牌组,而这样的 ▼ 图标意味着当前牌组已经显示它有的子牌组,如果没有图片,则意味着当前牌组没有子牌组,注意:子牌组可以通过命名方式来创建,例如:“父牌组::子牌组”。 - -牌组名称 :: 这是个常用点击区域,如果当前牌组有学习任务,点击它,将带你进入复习卡片的屏幕。 - -计数区域 :: 在每个牌组组右侧,有个计数区域,点击它,系统将带你进入牌组总览屏幕,在这里你将可以快速了解到当前牌组总共的牌组数量以及正待复习和学习中,以及新卡片的数量。 - -=== 高级操作 -对于一些不常见的任务,在下拉菜单中有一些附带操作,简单介绍如下: - -撤销 :: 在学习状态下刚刚复习过某个卡片后,你可在此通过点击当前按钮取消复习那张卡片的行为,使那张卡片再次返回之前复习状态。 - -检查数据库 :: 点击它能够自动修复很多数据库的问题,它也可以清除掉任何没用过的tag标签,如果你的牌组遇到了很多问题,你首选操作应该是试试它。 - -检查媒体 :: 如果你遇到有关媒体同步的问题,可以试着点击这个按钮。 - -空卡片 :: 从你的牌组集合中移除所有的空卡片,更多信息请参阅link: http://ankisrs.net/docs/manual.html#card-generation-&-deletion[桌面帮助文档] 。 - -恢复备份 :: 允许你从AnkiDroid的备份中恢复 <> - -管理笔记类型 :: 允许你添加、编辑或删除笔记类型,更多详情请参阅 <> 部分。 - -导入 :: 导入.apkg记忆库文件,更多详情请参阅 <>部分。 - -导出牌组集合 :: 导出所有牌组,并生成collection.apkg文件。更多信息请参阅<>部分。 - -=== 牌组计数Deck Counts -紧跟着每个牌组的后面,有三个数组显示,左边的蓝色数字代表今天 -你还有多少张心卡片要学习,anki默认每天给你安排20个新卡片的学习任务, -如果你喜欢,你可以自定义这个数字。中间红色的数组代表着今天正处在学习状态的卡片有几张, -最右边绿色的数字代表截至到今天逾期的、需要复习的卡片有几张。 -(例如一些卡片,已经从学习阶段毕业). 如果一个牌组On a deck -之前你从来没有学习过,那么学习中的和复习的数字将对应为0。 - -就像上面解释的那样,在这些数字上点击,系统将带你进入牌组概览页面. - - -[[抽屉]] -== 导航抽屉 -++++++++++ - -++++++++++ - -在应用的大多页面,只要轻轻点击左上角的菜单图标,系统将打开导航抽屉, -或者你从屏幕的左侧向内轻轻活动,也可以打开导航抽屉. 它将用于 -快速在应用的不同页面间切换,通过它你可以切换到下面的页面: - -牌组列表 :: 带你进入应用的顶级页面,这里陈列着所有的牌组(<>) -卡片浏览器 :: 显示一个所有的卡片列表 (<>) -统计 :: 帮助你追踪你学习进度 (http://ankisrs.net/docs/manual.html#statistics[more info in Anki manual] and <>) -夜间模式 :: 这个按钮将切换你的应用到暗色样式,很多用户发现这种样式可减轻眼睛疲劳,通常在光线暗的地方复习卡片时候用到。参阅维基 https://github.com/ankidroid/Anki-Android/wiki/Advanced-formatting#customize-night-mode-colors[wiki] 这里有关于在夜间模式下如何优化卡片背景和字体颜色的说明。 -设置 :: 允许你设置各种选项来优化你的应用,使其更适合你的使用习惯 (<>) -帮助 :: 打开当前这个网页 -提交反馈 :: 从AnkiDroid团队获取支持 - -[[牌组概览]] -== 牌组概览屏幕 -++++++++++ - -++++++++++ -在牌组列表屏幕,点击数字区域,你将被带到牌组概览页面,在平板电脑上,它总是显示在牌组列表的右侧。 - -在这个屏幕上,你能够看到当前这个牌组的摘要信息,创建自定义学习选型,重建或清空过滤的牌组,改变记忆库选项。当这个屏幕可见的时候点击学习按钮,系统将带你进入这个牌组的学习页面。 - -=== 活动栏 -活动栏上显示的图标将依赖于你当前打开的是普通牌组还是过滤牌组。 - -==== 普通牌组 - -自定义学习 :: 点击扳手图标将带你创建自定义会话,例如在正常学习安排之外增加额外的复习任务,或者当前牌组中某些卡片,要了解更多相关信息请参阅 <> 部分。 - -==== 过滤牌组 - -清空牌组 :: 点击叉号图标将清空当前过滤牌组中的所有卡片(例如:返回到他们原来的牌组中). - -重建牌组 :: 点击重新创建图表,系统将根据过滤牌组选项中的设置重新创建生成过滤牌组。 - -==== 概览菜单 - -牌组选项 :: 允许你配置一些与当前牌组相关的选项, -例如每天学习的新卡片和复习的卡片数量。 -了解更多关于学习选项的信息请参看 http://ankisrs.net/docs/manual.html#deckoptions[desktop documentation] 部分。 - -取消搁置 :: 这个选项只有当选择的牌组包含有被手动搁置或是自动搁置的卡片时候才会显示。 - -[[复习]] -== 学习屏幕 -在牌组列表屏幕,点击牌组名称,或是在牌组概览屏幕点击学习按钮,系统将带你进入学习页面,在哪里你可以开始你的学习。 -++++++++++ - -++++++++++ - -=== 基本概念 -如果你之前没有用过桌面版的Anki,你最好先看一下 - http://ankisrs.net/docs/manual.html#_intro_videos[intro video] -这里的视频介绍, 它解释了基本的复习过程。 - -在屏幕的左上角,你将看到三个数字,On the top left of the screen you'll see three numbers. From the left, these -他们分别代表剩余的新卡片数量,学习中的卡片数量,以及等待复习的卡片数量。这些术语 -在桌面版的程序的视频介绍中有更详细的解释, -如果你还没看到,请现在打开please http://ankisrs.net/docs/manual.html#_intro_videos[check them out] -这个视频。 - -当你已经看到卡片的问题,并且已经回想到它的答案,或是 -你不知道答案, 点击*显示答案* 按钮。 点击之后i,底部区域将变成2-4个备选按钮, -根据你之前对这张卡片做出的相应,这些按钮将显示下次卡片出现的时间 -其中10m 代表 "10 分钟" and "5d" 代表5天, -你可以直接点击其中的一个按钮,确定下次卡片出现的时间。 - -为了使复习更快捷,你可以为回答卡片配置手势(例如点击屏幕或滑动屏幕),这样你就可以不用再点击按钮了。 -关于更多配置手势的信息请参阅 <> 部分。 - -=== 活动栏 -在学习屏幕的活动栏上有几个按钮,他们可执行多种常见操作,这些显示出来的按钮的数量是取决于 -你的屏幕尺寸,以及屏幕分辨率。如果你的屏幕有足够的宽度,它将显示所有的按钮。 -如果你的屏幕不能显示完这些按钮,其余的按钮将可通过点击最右侧的菜单按钮展示出来。如果你不能确定某个按钮的用途 -你可以长安这个按钮,系统将弹出一个标签告诉你这个按钮的名字,接下来向你展示这些可用的按钮: - -取消 :: 取消上一张卡片你选择的答案(这个按钮总会显示)。 -标记卡片 :: 为当前卡片的笔记添加上一个"marked"标签,这样方便你在卡片浏览器中很容易找到它。 -当你想随后对当前笔记做一些操作的话,这个标记会很有用,例如回家后查询一个单词。进行标记的卡片会在卡片的左上角显示一个星图标。 -编辑卡片 :: 打开笔记编辑屏幕,在这里你可以改变现实在卡片上的内容(了解更多相关信息请参阅 <> 部分) -隐藏 / 删除 :: 这里你可以选择搁置,暂停当前卡片或是笔记。 - -- **搁置卡片 / 搁置笔记: ** 隐藏一张卡片或是与它的笔记相关的所有卡片直到下一天才出现。 (如果你向取消搁置,你可以在牌组列表页面 <>长按牌组名称选择弹出的对话框, 或者在牌组概览页面 <>进行设置.) 如果有时候你不想回答这些卡片,或是你想在其他时间再去学习这些卡片的时候,这个选项会显得很有用。如果一些卡片来自于同一个笔记的时候搁置也会自动执行 。如果卡片在被搁置的时候正处于学习中,则他们将优先被移动到新卡片队列或是复习卡片队列的后面。 -- **暂停卡片 / 暂停笔记: ** 隐藏一个卡片或是相关笔记的所有卡片直到它们被手动取消暂停(你可在<>浏览器页面长按目标笔记实现取消暂停)。有时你想避免复习这个笔记,但又不想删除它的时候,这个选项会显得很有用。如果卡片被暂停的时候正处于学习状态,则他们会被优先移动到新卡片队列或是复习卡片队列的后面。 -- **删除笔记: ** 删除当前卡片相关的笔记的所有卡片。 - -重新播 :: 如果当前卡片有音频在它的正面或是背面,点击此按钮,音频将会再次播放。 -启用 / 禁用白板 :: 这个按钮可启用或禁用当前牌组的白板功能。白板功能可允许你在屏幕上涂鸦。 -当你在学习汉语,日语,或是阿拉伯语的时候,为当前牌组开启白板功能,来练习写字会很有用。 -当启用白板的时候,两个新的按钮将会出现,一个是清除白板上的内容,一个是隐藏白板,当禁用白板后,这两个按钮也会消失。 -牌组选项 :: 打开当前牌组的牌组选项,了解更多牌组选项的信息请参阅 http://ankisrs.net/docs/manual.html#deckoptions[desktop documentation]部分。 - -=== 卡片学习完毕 -当你学习完了今天到期的卡片,你将被带回到牌组列表并显示一个祝贺信息。从这里你可以选择另外一个牌组继续学习,或者你已经全部完成了今天的学习任务,你也可以轻轻地点击一下home键, -关掉ankidroid(当然,如果你愿意你可以在学习进行中关掉AnkiDroid)。 - -如果你想进一步学习当前的牌组,只要轻轻再次点击牌组,系统将给你几个选项可以使你继续学习,更多信息请参阅 <> 部分。 - - -[[添加笔记]] -== 添加笔记屏幕 -*_注意:_* 这部分假定你已经理解了什么是卡片,笔记,模板,字段和笔记类型 http://ankisrs.net/docs/manual.html#notes-&-fields[notes, fields, card templates, and note types] - -要添加笔记,只需在牌组列表页面轻轻点击右下角悬浮的‘+’号按钮,并选择添加即可。 -++++++++++ - -++++++++++ - -在添加笔记屏幕,下面的几个控件是可用的: - -笔记类型 :: 允许你选择你喜欢的笔记类型去添加笔记。 -对于大多数目的"基础" 笔记类型是足够的,但是如果你想产生一个额外的反转卡片,(例如,将原来现实在背面的信息显示在卡片的正面) -你可以选择“基础(和相反卡片)”笔记类型。 - -牌组 :: 允许你将生成的卡片改变所属的牌组。 - -字段 :: 在牌组选择器的下面是当前笔记的所有字段 (例如“基础”笔记类型有两个字段“正面”和“反面”). 轻轻点击一个字段, -键盘将自动弹出,允许你键入信息。 - -多媒体按钮 :: 在每个字段的后面有一个附件按钮,点击它,系统将允许你为此笔记添加媒体信息,(这个功能目前正在测试阶段). -添加图片按钮允许你通过设备上的相机或者系统的相册添加图片。 -录音功能允许你录制你的一段声音并放置到一个字段中。高级编辑器 -可以自动帮你在线搜索翻译和和发音音频。 - -标签 :: 调出一个对话框,让你从当前笔记中添加或是删除标签。 - -卡片 :: 它将显示这条笔记将能够生成的所有卡片的名字,轻轻点击按钮,系统将调出一个对话框,让你预览这些卡片。 -对话框中有当前笔记类型的相应卡片模板源代码。 从这里你可以编辑,预览,添加,删除卡片模板。欲了解更多卡片模板的相关信息请参阅 http://ankisrs.net/docs/manual.html#cards-and-templates[cards and templates section] 部分。 - - -当你完成卡片内容的输入工作,轻轻点击工具栏右侧的对号按钮,这条笔记将 -会被加入你的牌组集合中,如果你不想保存只想回到你之前那个页面,你只需要点击左上角的应用图标,或是点击 -你设备上的回退按钮即可。 - -[[编辑笔记]] -== 编辑笔记屏幕 -复习时,编辑笔记屏幕可以通过选择编辑打开,或通过在浏览器打开一个卡片。编辑屏幕类似于上面提到的添加新的笔记屏幕,但也存在一些关键的区别: - - * 在选定的卡上改变记忆库的操作(这是在“卡”框中强调)。 如果选择了一个具有多个卡片的笔记类型,则只有当前选定的卡片被移动到新的记忆库上。 - - * 改变“类型”下拉选择变化的笔记类型编辑模式。在这种模式下,编辑备注(即牌组、区域等)的内容被禁用,如果正在使用一个具有两个以上区域的自定义笔记类型,则会出现另外的按钮,可以让您控制区域的映射到新的笔记类型。 - -如果选择了一个比原来的笔记类型更少的卡片,只有第一个N卡片将被保存。例如从“基础(和相反卡片)”到“基础”只会导致第一张卡片被保存。为了警告你,在“卡片”框中的文本将出现红色,和一个显示之前保存说明的确认对话框。 - - 提示:在一次改变多个笔记类型,或定制卡片之间的映射时,使用浏览器中的桌面版Anki选择“改变笔记类型”。 - -在主菜单中也有几个高级选项: - -添加笔记 :: 创建一个新的空笔记 - -复制卡片 :: 复制当前笔记到一个新的可编辑的笔记中 - -重置进度 :: 将该卡片移到新卡片队列的结束。该卡片的当前状态被清除,但不是它的修订历史。 - -重新计划 :: 允许您在指定日期更改复习卡片。如果您输入已经学习的材料,而且你想以更高的初始间隔开始它,这个方法是有效的。 - -[[浏览器]] -== 寻找/搜索/浏览 -您可以通过点击来自<>的“卡片浏览器”按钮来搜索或浏览卡片。 - -++++++++++ - -++++++++++ - -浏览器屏幕开始在当前选定的牌组上显示所有的卡片。您可以通过点击顶部的放大镜图标搜索选定的牌组上的卡片。你可以通过左上角的下拉列表来选择牌组,从而改变选择的牌组(或改变所有牌组)。 - -默认情况下,浏览器中的第一列给出了将问题显示的文本(即正面)的闪卡,第二列显示答案的文本(即背面)的闪卡。 - -第一列也可以被配置为显示一个更紧凑的显示的 http://ankisrs.net/docs/manual.html#fields[“排序字段”] 。第二列通过点击列标题中的下拉菜单可以被配置为显示许多不同的参数。 - -请注意,因为您的滚动通过卡片的列表,列的内容是动态计算的。 - -从搜索结果,你可以点击一张卡片来编辑它(见上面的 <> 部分),或长时间点击它将显示一个菜单,允许你执行以下动作: - -标记/取消标记 笔记:: 从笔记中添加/删除“标记”标签。带有标记的笔记卡片被高亮显示在紫色中。 -暂停/取消暂停 卡片:: 暂停卡以黄色突出显示,并在复习过程中不显示。 -删除记录:: 请删除当前选定的卡片的说明,以及属于该说明的所有卡。如果没有从<>(备份)恢复,此操作将无法撤消。 -预览 :: 渲染当前选定的卡,以便您可以看到它看起来像在审阅。 - -=== 搜索 -AnkiDroid支持所有的搜索字符串,它的桌面版本,允许你执行相当复杂的搜索。一些例子: - - 标签:标记 :: 显示有标签“标记”的卡片 - - 是:由于 :: 只显示等待审阅的卡 - - 正面:新手 :: 显示只读卡片正面的字段正是“新手” - -对于一个完整的可能性列表,请看本节中的 http://ankisrs.net/docs/manual.html#searching[桌面手册] 部分。 - -另外,一些更常用的过滤器(标记,暂停,和标签卡)可以快速地应用,而无需手动输入他们从溢出菜单选择他们。您也可以从菜单中保存和召回常见的搜索查询。 - -[[过滤]] -== 过滤牌组 - -它的目的是优化学习过程,使你大多数记住的卡片的学习成本降到必要的最低数。一旦你的屏幕达到了,进一步的研究成为一个递减的回报:你将看到在同一张卡上花费的额外时间的数额一般不值得适度增加保留。 - -也就是说,如果你有一个测试迫在眉睫,或只是想通过一段时间,即使在你被显示的祝贺信息里,它也有可能继续审查。 - -“过滤牌组”是一个临时的牌组,包含基于各种标准的卡,如“忘记今天”,“被标记的“难”,等等。在经过筛选的牌组上的卡片,或当过滤后的牌组被删除,该卡片自动返回到他们原来的牌组。 - -创建一个过滤的牌组的最简单的方法是通过长时间点击一个牌组上,并选择“自定义学习”选项。 - -高级用户可以手动创建一个过滤的牌组,通过牌组列表屏幕上的溢出菜单选择“创建过滤的牌组”。 - -有关过滤后的牌组的进一步信息,请参阅 http://ankisrs.net/docs/manual.html#filtered[desktop documentation]。 -[[Anki桌面版]] -== 使用Anki的桌面AnkiDroid -Anki有一个免费的云同步服务称为AnkiWeb可以很容易的把你的卡牌在移动设备和电脑之间同步。如果你有一些不能使用同步的原因,使用USB这也是可能的,虽然这种方法更费力。 - -注意,AnkiDroid不隶属于它的桌面或AnkiWeb。AnkiDroid是基于它的桌面但它是由一个完全独立的志愿者社区开发的。 - -++++++++++ - -++++++++++ - -=== 通过云同步 -在您使用AnkiWeb之前,首先你需要创建一个帐户访问 https://ankiweb.net点击注册按钮。 如果你过去用过AnkiWeb,你可以跳过这一步。注册后,看到下面的相应的指令,这取决于你是否选择把你存在的牌组导入到AnkiDroid里面或从AnkiDroid导出。 - -==== 同步现有的牌组到一个新的AnkiDroid安装 -在这种情况下,你有一些现有的Anki牌组要通过同步AnkiWeb复制到一个新的AnkiDroid安装。打开Anki客户端与你现有的牌组(通常这会是Anki的桌面,但它也可能意味着一个版本的AnkiDroid你已经在另一个设备使用),然后单击“同步”按钮(其中有一个圈中的两个箭头)在牌组列表右上方。 - -如果你从未使用过ankiweb,在这之前如果提示,你需要输入你的凭据,然后按“上传AnkiWeb”按钮来确认你现有的AnKi里牌组是否与 AnkiWeb重合覆盖。AnKi将会上传你所有的卡片,图像和音频到AnkiWeb。如果你有很多媒体文件,这可能需要一些时间。 - -一旦同步完成,在设备上打开AnkiDroid可让你试图复制现有的牌组,点击顶部<> 的活动栏中的“同步”按钮。登录你的AnkiWeb信息后,AnkiDroid将下载你所有的卡片和媒体,并为下一次记住您的登录信息。 - -注意:在试图同步前如果你有任何存在的材料在AnkiDroid,你的上面会显示一条消息告诉你请你选择下载或上传到AnkiWeb。如果你乐意失去在AnkiDroid的卡片,它直接会选择“下载”。如果你需要与AnkiDroid合并现有的卡,那么你应该在继续前参阅<>部分。 - -第一个同步完成后,在你希望同步云变化的任何时候你都可以单击“同步”按钮,唯一的变化得是自上次同步被发送,随后的同步会更快。 - -如果您在桌面计算机上添加一些新的卡片,并希望同步到AnkiDroid,你会重复同样的基本过程:同步在桌面(或关闭程序,它自动同步关闭默认),然后在AnkiDroid点击同步按钮。 - -==== 从AnkiDroid同步到计算机 -从AnkiDroid同步计算机的过程基本上和从电脑同步AnkiDroid是相同的,但反过来就不同。 - -从<> 点击右上的同步按钮 (其中有一个圈中的两个箭头). 如果这是您第一次使用AnkiWeb,您可能需要输入您的登录信息,然后点击“上传”按钮上传你的AnkiDroid对AnkiWeb的收藏。 - -一旦同步完成,打开你的电脑Anki桌面版和按下同步按钮(在一圈两箭),AnKi将下载您的收藏。 - -[[AnkiWeb冲突]] -==== 解决AnkiWeb的合并冲突 -虽然这不经常发生,偶尔你的AnkiDroid的卡片上的结束的位置可能不会自动合并在AnkiWeb卡片。在这种情况下,无论是上传到AnkiWeb或从AnkiWeb下载都是必要,这将覆盖在另一边的任何变化。 - -如果你有新的卡片并想让双方保持同步,你可以为来自AnkiDroid每一个含有新的卡片导出一个牌组包 <>,然后当你选择同步“下载”,下载来自AnkiWeb。在同步完成后,你可以按<>部分从AnkiDroid导入你以前的牌组。 - -=== 通过USB - -如果您不经常上网,它仍然可以利用USB来回复制记忆库到你的设备。 - -USB方法是通过立即导入或导出你所有的记忆库。这意味着,不能像通过ankiweb同步,你不能改变两个位置然后合并他们。相反,如果你想添加卡片在桌面上,你需要确保从你的移动设备导出你的收集的最新版本,或你会最终失去在移动设备上任何评论的完成。 - -因此,您通常使用的工作流程是将您的collection从您的移动设备导出,并导入到桌面上,在桌面进行修改,然后导出您的收集,并将其导入到您的移动设备。 - -AnkiDroid不能直接导入文本文件。如果你想这样做,你需要做的是用桌面程序,然后将你的收集导入到AnkiDroid。 - -==== 通过USB从Anki桌面版复制所有记忆库到AnkiDroid - -在你的电脑上: - - . 打开桌面程序。 - . 从菜单中选择“文件”>“导出” - - . 单击“导出…”按钮。确保离开“所有记忆库”的选择,如导入个人记忆库到AnkiDroid是不可能的。“包含学习进度信息”也必须保持检查。 - . Anki会自动在桌面上创建一个collection.apkg。如果文件被命名为别的东西,请再次看上一步。 - . 通过USB电缆将你的Android设备连接到你的计算机。 - . 打开你的计算机上的文件资源管理器,查看您的安卓设备的内容。 - . 定位AnkiDroid文件夹。 - . 将collection.apkg文件从桌面拖动到这个AnkiDroid文件夹。 - -然后在AnkiDroid: - - . 在主屏幕上,从菜单中点击“导入文件” - . 点击"Collection" 然后确认 - -一旦完成,你的设备上的记忆库将被桌面上的记忆库替换。见章节<>与导入更多帮助。 -==== 通过USB从AnkiDroid复制所有记忆库到Anki桌面版 - -从 AnkiDroid复制你的记忆库到Anki桌面版的过程与上面基本相同,但反过来就不同。 - . 从你的设备断开USB - . 从主屏幕的主菜单中选择“导出collection” - . 确保“包含学习进度信息”保持检查和按** - . 从消息中指定的路径复制"collection.apkg"到你电脑的桌面上 - . 双击文件导入到Anki桌面 - -参阅<>下面的从AnkiDroid导出的更详细的信息。 - -[[导入]] -== 导入Anki文件 -你可以导入Anki文件(用.apkg文件格式)直接进入AnkiDroid。其他文件格式不能直接导入AnkiDroid,然而其它应用程序的卡片可以导入你电脑的Anki桌面版,然后可以<>。参阅 http://ankisrs.net/docs/manual.html#importing[importing section of the Anki Desktop manual] 得到的帮助。 -在Anki桌面, AnkiDroid有 http://ankisrs.net/docs/manual.html#exporting-packaged-decks[两种.apkg文件] ("collection package" and "deck package")的区分,Collection packages名称为"collection.apkg",导入完成时将取代AnkiDroid的所有内容。任何apkg文件是“not”命名为"collection.apkg",它被视为一个记忆库包,当它导入到AnkiDroid时,将与任何现有的内容合并。 - -你可以将.apkg Anki collection文件导入到AnkiDroid通过使用标准的Android系统打开它们,或通过手动从AnkiDroid导入它们: - -=== 使用安卓打开文件 -apkg文件是AnkiDroid自动关联,例如,如果你打开你发给自己的.apkg电子邮件附件,然后AnkiDroid会自动打开文件并确认您是否要导入。点击OK,apkg文件将被导入。 -=== 在AnkiDroid手动导入文件 -您还可以手动导入.apkg文件如下: - - * 通过USB将你的设备连接到你的计算机 - * 从你的电脑上复制.apkg到你设备上的AnkiDroid文件夹 - * 打开你的设备的AnkiDroid - * 从主菜单中的牌组列表中,选择“导入” - * 当有提示时,选择你刚才复制到你设备的apkg文件 - * 点击“确定” - -[[导出]] -== 导出Anki文件 -AnkiDroid可以在.apkg Anki文件格式中导出你的卡片以便你可以把它们导入到Anki桌面版,或把它们分享给其他人。 -在Anki桌面版, 你可以导出一个 http://ankisrs.net/docs/manual.html#exporting-packaged-decks[集合包或记忆库包],取决于你想实现什么。 - -有两个导出选项可供选择:“包含学习进度信息”和“包含媒体文件”。一般默认选项是足够的,如果你不选择包含学习进度信息,Anki会认为你与其他人共享的记忆库,并将删除标记和依附的标签,他们将有一个干净的副本。 - -=== 导出collection库 -当使用Anki桌面版导出时,你一般要导出你的整个collection,包括你所有的历史回顾等。 - -在记忆库屏幕的主菜单: - - . 点击菜单中的“导出”项目。 - . 点击“确定”使用默认选项 - . 再点击“确定”导出collection.apkg给你发电子邮件,或者你可以通过USB手动复制到你的计算机 - -在你的计算机上导入文件: - - . 保存“collection.apkg文件”到你的桌面 - . 双击文件开始使用Anki。 - . 确认你希望更换,以便你的移动端设备的记忆库覆盖你桌面上的旧数据 - . 导入后,如果你希望你可以删除你桌面上apkg文件。 - -=== 导出记忆库 -如果你想要把一个AnkiDroid记忆库分享给其他用户,你可以导出一个记忆库。 - -在记忆库屏幕的主菜单: - - . 你想导出,需要长时间点击记忆库 - . 点击“导出” - . 点击“确定”使用默认选项 - . 再点击“确定”导出apgk给另一个用户发电子邮件 - -[[备份]] -== 自动备份 - -AnkiDroid会自动为你创建你的collection备份。备份包括所有的卡片和统计数据,但不包括声音或图像。 - -当你首先启动应用程序时,备份在后台取得。如果上次创建备份以来已过了超过5小时,备份只会发生。默认情况下, AnkiDroid将保存最后8个备份;这个数字可以在主设置改变。 - -你可以从主菜单的<> 选择“恢复备份”选项恢复备份。 - -[[设置]] -== 首选项 - -可以通过打开导航抽屉,选择“设置”来访问首选项屏幕。它允许你自定义不同的应用程序设置和AnkiDroid如何出现。 - -覆盖在下面的首选项屏幕被划分成不同的部分。 - -=== AnkiDroid -这些都是影响整个应用程序的一般设置: - -AnkiWeb账户:: 更改用于与云同步的账户。同步的更多信息,请参见 <>。 -获得媒体同步:: 默认情况下,AnkiDroid将同步声音和图像以及你的卡片和历史回顾。如果你禁用此选项,声音和图像将不会通过AnkiDroid同步。 - -自动同步:: 如果你想AnkiDroid每次打开同步和关闭应用程序来启用此选项。这种行为每十分钟就有一次限制。一旦一个同步开始,你可以通过按下你的设备的后退按钮,但是它可以需要一些时间来取消采取的效果。 - -用户想要更细致的控制同步发生时,可以使用一个第三方应用程序像Tasker自动同步。想要获得更多同步信息,请参阅 https://github.com/ankidroid/Anki-Android/wiki/AnkiDroid-API#sync-intent[API documentation]。 - -记忆库的新卡片:: “使用当前记忆库”默认意味着Anki可以保存每一个记忆库最后使用的笔记类型,然后下一次在你选择的记忆库再次选择(并且,此外,当选择添加到任何地方时将从当前选定的记忆库开始)。另一个选项,“由笔记类型决定”,保存了每一个笔记类型最后一个使用的记忆库(当您选择“添加”时,打开“添加”窗口到最后一个使用的笔记类型。)如果每个记忆库你总是使用一个单一的笔记类型可能会更方便。 - -语言:: 改变语言 注:AnkiDroid都是由志愿者翻译的。如果你发现丢失或不正确的翻译,随时为翻译项目做出贡献 。更多详细资料可以在 https://github.com/ankidroid/Anki-Android/wiki/Contributing#translate-ankidroid[AnkiDroid维基百科]找到。 - -错误报告模式:: 当AnkiDroid崩溃,要控制AnkiDroid是否在发送错误报告给我们的错误报告系统之前请求你的认可。如果你希望你还可以完全禁用报告功能,。 - -==== 通知 -本款允许您设置何时以及如何使AnkiDroid在Android的通知栏显示通知。 - -通知时 :: “从不通知”将禁用AnkiDroid所有的通知。“正在等待的消息”将只显示重要的状态更新,如当一个同步完成。当你有超过N卡由于(需要启用的部件)“超过N卡到期”将显示一个通知。 - -振动:: 当显示一个通知时,你的设备会振动 -闪光:: 当有未读通知存在,你的设备会有光闪烁(如果你的设备有一个通知LED) - -=== 复习 - -当你复习卡片时,复习屏幕允许你自定义AnkiDroid表现。请注意,只有复习设置适用于显示在这里的所有记忆库。这有记忆库特定的更多有关复习的设置。这些记忆库上的特定设置位于记忆库上的选项。 - -新卡的位置 :: 当新的卡显示时控制:无论是所有的评论混合,之后,或之前。 - -下一天开始 :: 当AnkiDroid开始显示下一天的卡时控制。保证默认设置早晨4点,如果你学习在午夜时分,你在一个学习期间所显示的卡不会有两天的证明。 -会话。如果你熬夜很晚或很早醒来,你可能想调整到一个你通常睡觉的时间。 - -学习进度的限制 :: 当目前记忆库没有什么学习但是卡片还在学习状态,学习进度的限制可以告诉AnkiDroid怎么做。20分钟的默认设置,告诉AnkiDroid如果他们将在不到20分钟内被显示并且没有其他事情做,卡片应该及早显示。如果设为0,Anki将永远等待全期,直到剩下的牌已经准备好了才显示祝贺屏幕。 - -时间段限制:: 时间段是一个技巧通过把一个较长活动划分为小阻碍来帮助集中精力(例如30分钟的学习期间)。如果你设置的时间段的时间限制在一分钟内不为零的数,AnkiDroid会周期性的显示一条消息说你在规定期限成功学习了多少卡片。 - -==== 显示 -本节涉及在复习过程中方式卡的显示 - -保持在屏幕上 :: Android忽略自动屏幕超时设置总是保持在屏幕上 - -全屏模式 :: 切换到一个身临其境的全屏模式,这样你可以使用更多的屏幕。可以在“隐藏系统栏”之间进行选择,该“隐藏系统”栏将隐藏系统状态栏、动作栏和底部导航按钮。或者,你可以选择“隐藏系统栏和回答按钮”,这将隐藏一切除了实际的卡片内容本身。你可以从系统栏向内滑动(即向下或向上)暂时退出全屏模式。 - -注意,身临其境的全屏模式只支持Android 4.4 + - -中心对齐 :: 默认情况下AnkiDroid试图和AnKi桌面显示卡片完全一样,但是如果你喜欢你的卡片在AnkiDroid中心垂直对齐就可以启用此功能。 - -显示按钮的时间 :: 默认情况下,答案按钮将显示下一个被显示的时间卡片。如果您禁用此选项,则该次将不会出现,只有“再次”、“好”和“易”等标签将被显示出来。 - -卡片放大 :: 在这里您可以增加卡片内容的缩放级别(不包括图像)。如果你想增加所有卡片的字体大小,你可以使用这个选项。 - -图像的缩放 :: 在这里你可以增加嵌入在你的卡片中的任何图像的缩放级别。 - -回答按钮的大小 :: 如果你发现很难按这个答案按钮,你可以使用这个设置,使它更大。 - -显示剩余 :: 禁用这个允许您隐藏屏幕的左上角的卡计数。 - -==== 电子白板 -本小节控制阅读者中的白板。 -注意:在研究屏幕中的菜单中,必须在每一个单独的记忆库上启用白板。 - -笔画宽度 :: 控制白板的笔画宽度。减少笔画宽度可以让你更详细地绘制。 - -黑色笔触 :: 使用黑笔画代替颜色,这可能会减少内存的使用。注意:当启用了夜间模式时,此设置不适用。 - -==== 自动显示答案 -自动显示应答功能允许你在一段时间后自动显示答案。您还可以自动显示下一个问题;在这种情况下,该卡片被假定为失败(即再次按钮被自动选择) - -时间显示答案 :: 等待时间直到答案自动显示 - -显示下一个问题的时间 :: 等待时间直到下一个问题会自动显示。 - -=== 字体 -在这个屏幕你可以使用AnkiDroid改变字体,和一些相关的字体缩放选项。 请参阅 <> 部分获得有关使用自定义字体的更多信息。 - -默认字体 :: 选择AnkiDroid阅读使用默认字体。您可以通过将它们复制到“字体”文件夹中,将字体添加到列表中。 - -默认字体的适用性 :: 默认设置通过Anki桌面,当卡片样式没有指定字体时只使用默认字体,但是你也可以强制默认字体被应用,忽略卡片样式的任何字体规范。 - -浏览器和编辑器字体 :: 字体是由浏览器和编辑器使用 - -卡片浏览器字体缩放 :: 让你更改卡片浏览器中使用的字体大小。 - -[[手势]] -=== 手势 -AnkiDroid允许你定制界面,以便通过频繁执行的点击和滑动手势行为可以迅速完成。 -==== 行动 -可以使用以下的手势: - - * 向上滑动 - * 向下滑动 - * 向左滑动 - * 向右滑动 - * 双触摸 - * 向上触摸 - * 向下触摸 - * 向左触摸 - * 向右触摸 - -以下操作可用于每个手势: - -没有行动 :: 如果你想禁用某些动作,开发区等。不要做任何事情。 - -回答按钮1 :: 当答案屏幕显示时,选择红色的按钮,表明你希望再次复习该卡片。这是有用的,当你忘记了一张卡片或希望更频繁地回顾它。当问题被显示时,这个动作(和下面的所有其他回答动作)将简单地显示答案。 - -回答按钮2 :: 当答案屏幕显示时,选择左边的第二个按钮,一般表示你发现卡片很难记住。 - -回答按钮3 :: 当答案屏幕显示时,选择左边的第三个按钮。 - -回答按钮4 :: 当答案屏幕显示时,选择左边的第四个按钮(适用时)。 - -推荐答案(绿色) :: 当答案屏幕显示时,选择“绿色”按钮。这是你应该使用最多的按钮。 - -回答好不如推荐 :: 当答案屏幕显示时,选择右边的按钮,表明你发现该卡太容易记住,并想要一个更长的延迟。 - -撤销 :: 撤销上一个操作。 - -编辑卡片 :: 编辑当前卡片。 - -标记 :: 在当前记录添加一个称为“标记”的标签,所以它可以很容易地在搜索中找到。 - -查询表达式 :: 当查找功能启用(在高级设置),查找在选定的字典中的表达式。注意:在这个操作将工作之前,需要将表达式复制到剪贴板。 - -会员卡 :: 从回顾中隐藏当前卡片。 - -暂停卡 :: 回顾期间防止当前卡片被显示,直到你通过卡片浏览器不暂停它。 - -删除记录 :: 删除当前显示的记录和所有的卡片。 - -播放媒体 :: 在卡片上重播任何音频。 - -中止学习 :: 停止复习,并回到记忆库上的概述页面。 - -隐藏笔记 :: 埋葬当前的笔记(即隐藏它,直到第二天)。 - -停止记录 :: 暂停当前的记录(即隐藏它,直到你不暂停它)。 - -=== 高级 -这里显示高级用户的一些不常见的功能 - -收藏路径::改变AnkiDroid的数据存储的位置(不推荐) - -完全同步 :: -点击这个项目,迫使下一个同步进行一个完整的上传或下载(例如,因为你不小心删除了一个记忆库的一边,并希望恢复记忆库,而不是删除同步)。 - -高级统计 :: -考虑到在“预测”图的未来的评论效果。更多信息在<>. - -==== 解决方法 -输入答案到卡片 :: -如果你已经设置了你的卡片,要求你输入答案(解释在 http://ankisrs.net/docs/manual.html#templates[桌面手册这部分]), AnkiDroid将在卡片显示键盘,让你检查你的答案。 - -当用电子白板和手势操作时为了提高用户的体验,我们使用从卡片分离出的一个输入框,这与Anki桌面版功能工作的方式不一致。 - -与它的桌面完全一致,你可以启用此选项允许你保存屏幕区域,并选择合适的字体(如日本和中国)的输入框。 - -输入方法 :: -一些旧的设备无法将焦点集中到输入的答案字段的文本输入框中,所以这是添加(隐藏的API>14)。 - -长按方法 :: -一些老设备无法检测长按启动选择/复制文本,所以这是添加(隐藏的API>10)。 - -修复希伯来元音 :: -一些旧的设备无法提供希伯来文本,所以这个功能被添加,它允许用户下载并安装一个希伯来字体,这是已知的工作(隐藏的API>15)。 - -文本到语音 :: -启用此选项让Android读取你的所有卡片上使用默认的文本到语音引擎的文本。谷歌内置的TTS引擎工作;第三方TTS引擎可能或不可能。一旦每一个记忆库上的第一次回顾在记忆库的卡片上,AnkiDroid会要求你选择前面的语言和你的卡片背面。改变语言,或者做出你最初的选择后对一个给定的记忆库禁用TTS,你需要使用“重置语言”选项说明如下以及各个记忆库重新配置。 - -此功能可能在未来会被删除,有利于一个单独的可下载插件 - -查字典 :: -阅读者可以用字典将查找的单词复制到剪贴板中。在设置一个字典后,做以下来执行查找: - - * 长按你想复制的文本 - * 在选择要复制的单词后,在屏幕顶部的功能栏中按“复制”图标 - * 点击一次卡片上的任何地方 - * 当单击时执行查找,一个放大镜图标会出现 - -另外,查找动作可以通过一个手势来执行。 - -此功能可能在未来会被删除,有利于一个插件 - -重置语言 :: -用于重置TTS语言 - -电子阅读器(上/下按钮) :: -支持电子书阅读器的硬件按钮 (参阅 https://github.com/ankidroid/Anki-Android/issues/1625[issue 1625]) - -此功能可能在未来会被删除,有利于一个插件 - -电子书阅读器的双滚动 :: -当使用电子阅读器硬件按钮双滚动距离 - -== 高级功能 -[[反转卡片]] -=== 反转卡片 -Anki的系统有 http://ankisrs.net/docs/manual.html#note-types[内置的笔记类型,允许您在两个方向上复习卡片] 。 当在AnkiDroid <> ,你应该选择一个笔记类型,如“基础(和相反卡片)”,它会自动生成一个反向的卡片给你。 - -++++++++++ - -++++++++++ - -如果你使用了错误的笔记类型添加你的资料,你可以通过 <> ,或者你可以在Anki桌面版立即使用浏览器更改多个卡片的笔记类型。为此,按照指示在 <> ,然后在AnKi的桌面打开浏览器,选择要更改的卡片,然后从菜单选择“改变笔记类型”。 - -另外,如果你的卡片使用的是自定义卡片布局不包括反向卡,您可以按照下列指示,Anki桌面用户手册的 http://ankisrs.net/docs/manual.html#reverse-cards[部分反向卡] 编辑笔记类型。然而使用Anki桌面版不太方便,也可以直接在AnkiDroid编辑笔记类型;更多详情查看<>。 - -[[自定义字体]] -=== 自定义字体 - -AnkiDroid允许你在你的卡片上使用非系统字体。设置得当,强烈建议使用Anki的桌面官方的方法。更多信息请看 http://ankisrs.net/docs/manual.html#installingfonts[桌面手册中的相应部分] - -或者,你可以在AnkiDroid主目录创建一个新的“字体”子文件夹(即在设置下指定的文件夹>AnkiDroid>Collection路径指定的文件夹),在那复制一个兼容的字体文件(即,TTF),然后将此设置为设置下的默认字体>字体>默认字体。注意:这种方法将改变你的所有卡片的默认字体,而官方的方法可以更具体。另外,如果您同步AnkiWeb,使用这种方法会导致在不同的设备上显示不同的卡片。 - -只有TTF字体格式在Anki/AnkiDroid官方支持; https://www.google.com/get/noto/#/[Google Noto] 所有语言中字体集是高度推荐的,其他一些免费的字体可以在 https://github.com/ankidroid/Anki-Android/wiki/Freely-distributable-fonts[这里] 发现. - -请注意,AnkiDroid 必须加载整个字体到内存中才能使用它,亚洲语言的字体可以是相当大的。如果你有一个旧的设备,安装字体后注意到AnkiDroid经常崩溃,你可能已经超出了你的设备的内存限制。谷歌Noto,是不推荐使用的组合CJK字体,而是在 https://github.com/googlei18n/noto-cjk[分别从这里] 获得个人语言。 - -*注1*:如果你有禁用“同步获取媒体”,你可能需要从AnKi桌面手动复制字体文件夹到你的AnKiDroid/collection.media文件夹。 - -*注2*:在Anki桌面手册这里执行下面的步骤后如果你不能让你的字体工作,请参阅如何调试字体问题的详细步骤的常见问题 https://github.com/ankidroid/Anki-Android/wiki/FAQ#i-followed-the-instructions-in-the-manual-but-i-still-cant-get-my-custom-font-to-work[如何调试字体问题的详细步骤]. - - -[[定制卡片布局]] -=== 定制卡片布局 -卡片布局是完全可定制的,虽然这是有关一个相当陡峭的学习曲线的高级话题,你可能会发现它在<> 更方便做定制。 - -Anki桌面手册的 http://ankisrs.net/docs/manual.html#cards-and-templates[卡片模板部分] 有如何编辑笔记类型的详细说明,大部分的行动的讨论也可通过AnkiDroid点击备注编辑器的底部的“卡片”,或选择记忆库选择器的“管理笔记类型”选项。由于定制卡片布局的详细信息在Anki桌面手册,它将不会在这里重复。 - -有各种提示 AnkiDroid 维基 https://github.com/ankidroid/Anki-Android/wiki/Advanced-formatting[高级格式的页面] 让你从你的卡片格式中获得最多的格式,我们鼓励你去阅读它,如果你有任何你想与社区分享的技巧,就可以自由编辑它。 - -[[回答类型]] -=== 回答特征的类型 - -AnkiDroid允许你输入正确答案,然后将其与正确答案进行比较。你必须在AnKi桌面设置这个,正如AnKi桌面手册描述的。 http://ankisrs.net/docs/manual.html#checking-your-answer[AnKi桌面手册]. - -Anki桌面用卡片的输入框取代卡片前面的“{{类型:NN}}”字段。在AnkiDroid是“......”取代的,在底部有一个文本输入框。比较式文本和正确的文本是显示在回答侧边“{{类型:NN}}”字段的地方,像AnKi桌面。 - -文本输入框和软键盘可以通过首选项点击“禁用输入答案”隐藏。 - -即使输入禁用,正确的答案也显示在答案侧。这是故意的,否则正确的答案可能根本无法显示。 - -隐藏的比较(因为正确的答案无论如何都显示),HTML ID“typeans”可以用。使用Anki桌面添加“.mobile #typeans {display: none;}”到 http://ankisrs.net/docs/manual.html#cards-and-templates[卡片样式]。 - -回答提示类型和比较有更多的类可以用来改变它们显示的方式。其中一些与AnKi桌面的类似,一些具有AnkiDroid的特征。 - -比较使用三类,typegood,typebad和typemissing添加绿色,红色和灰色背景的分型比较。这三类也在Anki的桌面使用。 - -“......”提示有类”typeprompt”。 - -当在首选项中键入设置为关闭时,“typeOff”类在问题侧添加提示,并有包含答案比较方面的div元素。这个类可以用来显示类型提示或隐藏在这种情况下的键入比较。 - -[[高级统计]] -=== 高级统计 -注意: 高级统计可以从v2.6alpha7用。现在有必要使用一个开发建设<> 来使用它们。 - -如果高级统计被启用,它改变了“预测”的图表,使它显示了评论的估计数量,将在未来的一天,考虑到未来的评论,学习新的卡片和失败卡片。如果你每天学习所有的卡片,功能栏和左轴会在每一天显示卡片的数量,而线和右轴显示看不见的数量(如“学习”),如果你每天学习所有的卡片,你的记忆库和collection将由年轻的和成熟的卡片组成。预测图做计数的评论,目前是逾期的。它假定过期的卡片将根据“最大评论/日”记忆库选项进行回复。 - -高级统计可以在设置中启用→高级→高级统计(在插件部分)。 - -未来评论的结果,未来的评论后学习和失败的卡片影响评论。考虑到这一点,从审查日志计算每个结果的概率。然后结果是随机选择的,相比不太可能根据审查日志,这样的结果更可能根据审查日志。设置都会影响如何考虑未来的评论对随后评论结果的影响。 - -计算第N天,模拟部分 :: -如果此设置被设置为一个大于0的数,而不是随机选择一个结果,每个可能的结果连同它的概率是考虑到模拟中的。概率是考虑到图形和未来的评论的结果,这也影响到图。一次审查有两个可能的结果(说4),这都是一个回顾的结果。该审查也有几个可能的结果等。如果许多评论是模拟这种方式,许多评论(4 x 4 x 4 x…)必须考虑增加时间构成该图。因此,通过随机选择一个结果,模拟从现在开始的N天以后的评论。 - - 总之,较高的N给出了一个更精确的图形,但它需要更多的时间来组成的图形。 - -精密的计算 :: - -评论发生的概率小于100%减去通过随机选择一个结果进行模拟的配置精度,而不是考虑到每个可能的结果。此设置只适用第一N天计算。如果高级统计被禁用,如果你不复习卡片,不学习新的卡片和无效的卡片,“预测”图表将在未来的一天,显示评论的估计数量。 - -总之,更高的精度给出了一个更精确的图形,但它需要更多的时间来组成图形。 - -仿真迭代次数 :: -几次组成图,然后显示这些图的平均值。每一个时间图组成,另一个结果可能是随机选择的。如果我们的平均有许多结果是从审查日志随机选择考虑到的概率,平均结果可能会接近审查日志中的平均概率。如果我们的平均许多图表,平均图很可能是接近的图表,这是考虑到所有可能的结果。如果平均的图的数量不是太高,它将比考虑所有可能的结果要快得多。 -总之,一个更高的迭代次数给出了一个更精确的图,但它需要更多的时间来组成图。 - -[[beta测试]] -=== beta测试 -如果你想在AnkiDroid尝试最新的功能,你可以报名参加beta测试程序如下: - - . 访问 https://play.google.com/apps/testing/com.ichi2.anki[Google Play Beta page] - . 单击成为一个beta测试仪 - -在遵循这些步骤后,最新的测试版本将自动安装,作为普通更新,Google Play以同样的方式。如果你更喜欢冒险,你也可以成为一个阿尔法测试仪,除了执行上述步骤进行测试外,也可以通过加入 https://groups.google.com/forum/#!forum/ankidroidalphatesters[alpha testers group]。 - -根据link:help.html[主要帮助页面],请提交你在这些开发版中发现的AnkiDroid问题跟踪器的任何错误。 . - -如果你想在任何时候离开测试程序,只需访问 https://play.google.com/apps/testing/com.ichi2.anki[Google Play Beta page],然后单击“离开测试”。 - -[[贡献]] -== 贡献于AnkiDroid -AnkiDroid是一个开源项目,其发展依赖于志愿者的贡献。 这里有一些你可以贡献给ankidroid项目的方式: - -参与 :: 下载应用程序,加入 https://groups.google.com/forum/#!forum/anki-android[AnkiDroid论坛] 并回答其他用户的问题 ,提交错误报告,成为一个beta测试仪 <> 等。你可以作为一个非开发者在 https://github.com/ankidroid/Anki-Android/wiki/Contributing[维基百科] 发现更详细的信息。 - -翻译 :: AnkiDroid和用户手册的翻译都是由用户贡献,不胜感激。看 https://github.com/ankidroid/Anki-Android/wiki/Contributing#translate-ankidroid[翻译] 维基页面的详细说明有助于翻译。 - -发展 :: AnkiDroid源码在我们主要的 https://github.com/ankidroid/Anki-Android[Github page] ,bug修复和新功能很受欢迎。 -投资大量的时间在一个新的功能之前,如果它有可能被合并到主要项目,你可能会想先在论坛上问,因为不是所有的功能将被接受。 -如果你刚刚开始使用的是安卓编程,可以在论坛上随意为一些适合初学者提出一些技巧和/或任务。 diff --git a/manual.asc b/manual.asc deleted file mode 100644 index 09ace8d..0000000 --- a/manual.asc +++ /dev/null @@ -1,1243 +0,0 @@ -:docinfo1: -:toc: -:experimental: - -= AnkiDroid 2.16 User Manual -:sectanchors: - -== Introduction - -Thank you for using AnkiDroid, the Android client for the popular -http://ankisrs.net/[Anki] spaced repetition system. - -Anki is spaced repetition technique which is simple but highly effective. It helps you memorize things by automatically repeating them across increasing intervals based on your responses with no need for you to keep track of what to study or when to study it. You create notes (or download shared decks) with content you need to memorize, and the scheduler will make sure you see the content when you need to. - -AnkiDroid is intended to be used in conjunction with Anki on your computer. While it is possible to function without it, -some tasks are either only possible with, or a lot more efficient with Anki Desktop. Furthermore, it is *strongly recommended* to at least read https://docs.ankiweb.net/getting-started.html#key-concepts["Key Concepts"] section of the main Anki manual to understand the terminology used here. - -If this manual doesn't contain what you are looking for, please check the https://github.com/ankidroid/Anki-Android/wiki[AnkiDroid Wiki] for a list of changes, instructions for submitting bug reports and feature requests, a list of frequently asked questions, and much more. - -[[gettingStarted]] -== Getting started -To start using AnkiDroid, we need to add some cards to study. From the main screen, tapping the big blue plus button will allow you to either add a new "note" (i.e. create new flashcards), download shared decks (decks that other people have created and shared online), or create new empty decks. - -Please watch this 5 minute https://www.youtube.com/watch?v=F2K1gOSdIZA[tutorial video], which gives an introduction to adding, downloading, and studying cards in AnkiDroid. More detailed information can be found in the sections below. - -If you are an existing user of Anki Desktop wishing to import your decks from the computer, -you might like to skip straight to the <> section. - -[[deckPicker]] -== The Deck List -*_Note:_* _This section onwards assumes you understand what https://docs.ankiweb.net/getting-started.html#key-concepts[decks and cards] are_ - -The deck list is the screen you see when you start AnkiDroid. It displays a -list of the decks which contain all of your flashcards, and allows you to perform various actions: - -++++++++++ - -++++++++++ - -=== Add button -The big blue + button in the bottom right corner is used to add new material to AnkiDroid. Pressing it expands to give the following three options, which are also described in the https://www.youtube.com/watch?v=F2K1gOSdIZA[tutorial video]. - -Add :: Choose this option if you want to create your own flashcards (notes) with AnkiDroid. "Notes" and "cards" have specific meanings in Anki, which are https://docs.ankiweb.net/getting-started.html#key-concepts[explained in the main Anki manual]. Please see the tutorial video for a quick introduction to adding notes, or refer to the <> section below for more detailed information. - -Get shared decks :: To download a deck of cards from the internet that another user has contributed: - . Ensure you're connected to the internet. - . Tap + and then *Get shared decks*. AnkiWeb will open. - . Select a category, or type in a search. - . Tap *Info* on a deck you'd like to study. - . Scroll down and tap *Download*. - . You browser will download the file and display a "download complete" notification. - Tap this button. - . AnkiDroid will appear, and show a confirmation dialog. Tap the *Add* button. - . When the import completes, your deck should be ready to study. - -Create deck :: To create a new empty deck: - . Tap the + button and choose "Create deck" - . Choose a name for the deck, for example "New Japanese" - . Add cards to it following the "Add" instructions above - -=== App Bar -At the top of each screen in AnkiDroid is the App Bar, with buttons for performing various actions. -The following actions are available from the app bar in the deck list: - -Navigation menu button :: Tapping the icon on the far left will show the <> for quickly navigating between the main parts of the app. - -Sync button :: The circular button with arrows on the right is for synchronizing your cards with the cloud, as described in the -<> section. - -Overflow menu button :: On the far right is the overflow menu which contains less commonly used actions. These actions are described further below. - -**Hint:** long tapping on a button in the app bar anywhere in the app will display a textual hint describing what the -button does! - -=== Studying a Deck -To study the cards in a deck, simply tap on the deck name (or the "STUDY" button on a 10" tablet), and AnkiDroid will switch to study mode. - -Note that the currently selected deck is highlighted with a grey background, and if you have any <> they will be highlighted using a blue font. Filtered decks are discussed elsewhere in the manual. - -=== Other Deck Actions -Long tapping on a deck will show a list of other actions available to perform on that deck: - -Rename deck :: Use this option to rename a deck - -Deck options :: Tapping on deck options allows you to configure various deck specific study options. -Please see the https://docs.ankiweb.net/deck-options.html#deck-options[desktop documentation] for more information about these study options. - -Custom study :: Allows you to choose from some convenient presets for studying outside of your normal schedule, for example increasing the study limit for the day. See the section on <> for more detailed information. - -Delete deck :: Use this option to delete a deck (note: this action is not reversible, although you can <>) - -Export deck :: This option can be used to share a deck with other users. See the <> section for more information. - -Unbury :: This option is only visble when the selected deck has cards that have been manually or automatically buried. - -Rebuild / Empty :: If the selected deck is a <> then you also have the option to rebuild or empty the cards in it. - - -==== Clickable areas on the decks -Each deck in the list has three clickable areas: - -Deck expander :: If you are using -https://docs.ankiweb.net/getting-started.html#decks[subdecks], then a deck expander button may appear on the far left of the deck, which can be used to show / hide the subdecks. A ▶ icon means the deck has hidden subdecks which can be shown, a ▼ icon means the deck has visible subdecks that can be hidden, and no icon means that the deck has no subdecks. Note: subdecks can be created by using the naming convention "PARENT::CHILD". - -Deck name :: This is the main clickable area, which will take you to the study screen if there are cards available to review. - -Count buttons :: The count buttons on the far right of each deck act as a separate clickable area that takes you to the deck overview instead of the study screen. This can be useful if you want to quickly view the number of cards available in the deck. - -=== Advanced Actions -Some additional actions are located in the overflow menu for less common tasks, which are summarized below: - -Undo :: After reviewing the last card in a study session, you can undo it from here. - -Check database :: This can automatically fix a lot of problems with your database, and will also purge any unused tags. If you experience any problems with your collection, this is the first action you should try. - -NOTE: Under some circumstances, check database will move cards to a deck named _!Recovered Cards_. If this occurs, please move the cards to an appropriate deck via the <>, and delete _!Recovered Cards_ when it is empty. - -Check media :: Try to run this if you experience any issues with media syncing. - -Empty cards :: Remove any empty cards from your collection. See the link:++https://docs.ankiweb.net/templates/generation.html#card-generation--deletion++[desktop documentation] for more. - -Restore from backup :: Allows you to restore from one of AnkiDroid's <> - -Manage note types :: Allows you to add, edit, and delete note types. See the <> section for more help with this advanced feature. - -Import :: Import a .apkg anki file containing a deck. See the <> section for more. - -Export collection :: Export entire collection as a collection.apkg file. See the <> section for more. - -=== Deck Counts -Next to each deck, three numbers are displayed. The left, blue number, corresponds to how -many new cards you have to learn today. Anki will introduce 20 new cards a day by default, -and you can customize this number if you'd like. The red number in the middle is for the cards -due to be studied today which are currently in the learning phase, and the green number is the -cards which are due for review (i.e. cards which have already graduated from the learning phase). On a deck -you've never studied before, these numbers will both be zero. - -As explained above, tapping on the counts will take you to the deck overview screen. - - -[[drawer]] -== Navigation Drawer -++++++++++ - -++++++++++ - -The navigation drawer can be opened from most places in the application by pressing the left menu icon, -or alternatively swiping outwards from anywhere on the far left side of the screen. It is used -for quickly navigating between different parts of the application. You can switch to the following screens: - -Decks :: Takes you to the top level of the app where the list of cards are shown (<>) -Card Browser :: Shows a list of all your cards (<>) -Statistics :: Helps you track your study progress (https://docs.ankiweb.net/stats.html#statistics[more info in Anki manual] and <>) -Night mode :: This switches the app to a dark theme which many users find is less straining on the eyes, particularly when reviewing in the dark. See the https://github.com/ankidroid/Anki-Android/wiki/Advanced-formatting#customize-night-mode-colors[wiki] for instructions on how to customize the card background and font color used in night mode. -Settings :: Allows you to customize the app (<>) -Help :: Opens this web page -Send feedback :: Get support from the AnkiDroid team - -[[deckOverview]] -== Deck Overview Screen -++++++++++ - -++++++++++ -From the deck list, if you tap the counts area you will be taken to the deck overview screen. On tablets it is always shown in the area to the right of the deck list. - -On this screen you can view a summary of the deck, build custom study sessions, rebuild / empty filtered decks, and change deck options. When visible, pressing the study button will take you to the study screen for that deck. - -=== App bar -The icons that are shown in the app bar depend on whether your deck is an ordinary deck or a filtered deck. - -==== Ordinary decks - -Custom Study :: Tapping the wrench icon allows you to create a custom session, for example to do extra reviews outside your normal schedule, or study only certain cards inside a deck. See the <> for more information on this. - -==== Filtered decks - -Empty deck :: Tapping the cross icon will empty all of the cards in the current filtered deck (i.e. return them to their original deck). - -Rebuild deck :: Tapping the rebuild icon will rebuild the current filtered deck according to the settings specified in filtered deck options. - -==== Overflow menu - -Deck Options :: Allows you to configure some options related to the current -deck, such as the number of new cards and reviews to introduce each day. -Please see the https://docs.ankiweb.net/deck-options.html#deck-options[desktop documentation] for more information about these study options. - -Unbury :: This option is only visble when the selected deck has cards that have been manually or automatically buried. - -[[reviewer]] -== Study Screen -Tapping on the deck name from the deck list, or the study button from the deck overview screen will take you to the study screen where you do your study. -++++++++++ - -++++++++++ - -=== Basics -If you have not used Anki on a computer before, you may like to have a look at the -first https://docs.ankiweb.net/getting-started.html#videos[intro video] -before reading on, as it explains the basic review process. - -On the top left of the screen you'll see three numbers. From the left, these -correspond to new cards, learning cards, and cards to review. These are -explained in more detail in the intro videos for the desktop program, so -please https://docs.ankiweb.net/getting-started.html#videos[check them out] -if you haven't already. - -When you've looked at a card's question and remembered the answer, or decided -you don't know it, tap the *show answer* button. When you do, the bottom area will change to display 2-4 answer buttons, -depending on how you've answered the card previously. The buttons will display -the time a card will next be shown, so 10m means "10 minutes" and "5d" means -"5 days". You can tap directly on these buttons to choose a particular answer. - -To make reviewing faster, you can configure gestures (for example taps and swipes) to answer cards without using the buttons. -See the <> for more information on configuring gestures. - -=== App Bar -The App Bar at the top of the study screen has several buttons for performing various common actions. The number of buttons which are shown -is determined automatically by Android based on the size and resolution of your screen. If there is not enough space to show the button -for a given action, then the action will be available from the menu instead. If you are unsure what a button does, you can long-tap on it to -see the name of the action. The following action are available: - -Undo :: Undo the answer you chose for the last card you studied (button always shown). -Mark Card :: Adds a "marked" tag to the current note, so it can be easily found in the browser. -This is useful when you want to take some action on the note at a later date, such as looking up a word when you get home. Marked cards also show a small star in the upper-right-hand corner during reviews. -Flag Card :: Adds a color coded "flag" (red, orange, green, or blue) -This can be used as a general purpose indicator to differentiate your cards. Flags are represented by a number from 1-4, corresponding to the previously listed colors. -Edit Card :: Open the edit note screen, where you can change the content displayed on the flashcard (see the <> for more help) -Hide / Delete :: Give options to bury, suspend, or delete the current note or card - -- **Bury card / Bury note: ** Hides a card or all of the note’s cards from review until the next day. (If you want to unbury cards before then, you can choose “unbury” from the long-press menu in the <>, or from the <>.) This is useful if you cannot answer the card at the moment or you want to come back to it another time. Burying can also happen automatically for cards of the same note. If cards were in learning when they are buried, they are moved back to the new card queue or review queue prior to being buried. -- **Suspend card / Suspend note: ** Hides a card or all of the note’s cards from review until they are manually unsuspended (by long-tapping a card in the <>). This is useful if you want to avoid reviewing the note for some time, but don’t want to delete it. If cards were in learning when they are suspended, they are moved back to the new card queue or review queue prior to being suspended. -- **Delete note: ** Deletes the note and all of its cards. - -Replay Audio :: If the card has audio on the front or back, it will be played again. -Enable / Disable Whiteboard :: This action enables or disables the whiteboard feature for the current deck. The whiteboard feature allows you to draw on the screen, -which is particularly useful for practicing drawing characters from languages such as Japanese. When the whiteboard has been enabled for the current deck, -two new actions will become available for clearing and hiding the whiteboard. Disabling the whiteboard will hide these actions as well as the whiteboard itself. -Deck options :: Open the deck specific study options. See the https://docs.ankiweb.net/deck-options.html#deck-options[desktop documentation] for more information about these study options. -Check Pronunciation :: This action enables or disables the temporary audio recorder toolbar at the top of the card. This feature allows you to record your voice and replay it. It is used primarily to check your pronunciation. This toolbar is composed of three buttons: play, stop playing and record microphone audio. This tool can be used while viewing either the question or the answer. - -=== Reaching the end of the study session -When you've finished the cards that are due to be studied today, you'll be taken back to the decks list and shown a congratulations message. From here you can select a different deck, or if you've finished studying for the day, you can simply tap the home button in order to -close AnkiDroid (and you can also do this in the middle of reviews if you -wish). - -If you wish to keep studying the same deck further, tap on the deck again which will give you several options for continued study. Please see the <> section for more on custom study. - - -[[addingNotes]] -== Add Note Screen -*_Note:_* _This section onwards assumes you understand what link:++https://docs.ankiweb.net/getting-started.html#notes--fields++[notes, fields, card templates, and note types] are_ - -To add a new note, tap the + button at the bottom of the deck list and choose "Add". -++++++++++ - -++++++++++ - -The following controls are available in the add note screen: - -Type :: Allows you to select the type of note you'd like to add. -For most purposes the "Basic" note type is sufficient, but for example if you would like an extra card generated which is the reverse of the main card -(i.e. shows the "Back" field on the front of the card), you could chose the "Basic (and reversed card)" note type. - -Deck :: Allows you to change the deck the generated card/cards will be added to. - -Fields :: Below the deck selector are the fields for the note (for example the "Basic" note type has two fields "Front" and "Back"). When you tap on a field, -a keyboard will come up, allowing you to type in information. - -Media Buttons :: Next to each field is an attach icon, which allows you to add media to your note (this feature is currently in the experimental phase). -Add image lets you add images either via your device's camera (if it has one), or from your photo library. -Record audio allows you to record your voice and place it into a field. The advanced editor lets you automatically -search for translations or pronunciation audio files online. - -Tags :: Brings up a dialog which lets you add / remove tags from the note. - -Cards :: Shows the names of the cards which will be generated for the selected note type. Tapping on this button will bring up a dialog which lets you preview -the source code for the card template of the selected note type. From here you can edit, preview, add, and delete card templates. See the https://docs.ankiweb.net/templates/intro.html#card-templates[cards and templates section] of the Anki Desktop manual for more information about card templates. - -Long press in a text entry field to add a cloze deletion around the selected text, or an empty cloze deletion if there is no selected text. - -When you've finished typing in the content of a note, tap the tick icon in the app bar at the top to add it to -your collection. Alternatively, if you want to go back to what you were doing without saving, you can tap the app icon, or -use the hardware back button. - -[[noteFormattingToolbar]] -=== Note Formatting Toolbar - -The note formatting toolbar contains basic text formatting buttons (Bold, Italic, Underline, Horizontal Line, Insert Title, Change Font Size, <> and Insert Cloze Deletion). - -It also allows the addition of user-defined toolbar buttons using HTML. HTML is a powerful language allowing nearly endless customization of your cards. https://github.com/ankidroid/Anki-Android/wiki/Note-Editor-Toolbar-HTML-Samples[Our wiki] contains common code samples to get you started. - -A user-defined toolbar button can be removed by long pressing the button and selecting "Delete". - -[[editingNotes]] -== Edit Note Screen -The edit note screen can be opened by choosing edit while reviewing, or by opening a card in the browser. -The edit screen is similar to the add new note screen mentioned above, with some key -differences: - - - * Changing the deck operates on the selected card (which is underlined in the "Cards" box). - If a note type is chosen which has more than one card, only the currently selected card will be moved to the new deck. - - * Changing the "Type" dropdown selector changes to the note type edit mode. In this mode, editing the content of the note (i.e. deck, fields, etc) is disabled, - and if a custom note type with more than two fields is being used, additional buttons will appear which let you control the mapping of the fields to the new note type. - -If a note type is selected which has less cards than the original note type, only the first n cards will be kept. For example changing from "Basic (and reversed card)" to "Basic" - will lead to only the first card being kept. To warn you of this, the text in the "Cards" box will appear red, and a confirmation dialog will be shown before the note is saved. - - Hint: to change the type for multiple notes in one go, or to customize the mapping between cards, use the "Change note type" option in the browser on Anki Desktop. - -There are also several advanced options available in the main menu: - -Add note :: Create a new empty note -Copy card :: Copy the current note to a new editable note -Reset progress :: Move the card to the end of the new card queue. The current state of the card is cleared, but not its revision history. -Reschedule :: Allows you to reschedule as a review card on a given date. This is useful if you have imported already-learnt material, -and you want to start it off with higher initial intervals. - -[[browser]] -== Finding/Searching/Browsing -You can search for or browse cards by tapping the "Card browser" button from the <>. - -++++++++++ - -++++++++++ - -The browser screen starts by displaying all the cards in the currently selected deck. You can search for cards in the selected deck -by tapping the magnifying glass icon in the top. You can change the selected deck (or change to all decks) by choosing the deck from the -dropdown list on the top left. - -By default, the first column in the browser gives the text which will be shown on the question (i.e. front side) of the flashcard, and the second column shows the text from the answer (i.e. the back side) of the flashcard. - -The first column can also be configured to show the https://docs.ankiweb.net/editing.html#customizing-fields["sort field"] for a more compact display. The second column can be configured -to show many different parameters by tapping the drop down menu in the column heading. - -Note that the content of the columns is dynamically calculated as your scroll through the list of the cards. - -From the search results, you can tap on a card to edit it (see the <> above), or long-tapping on it will show a menu allowing you to -perform the following actions: - -Mark / unmark note :: Add / remove the "marked" tag from the note. Cards with a marked note are highlighted in purple. -Flag card :: Change or remove the color coded "flag" on the card. Cards with a flag are highlighted in the flags color. -Suspend / unsuspend card :: Suspended cards are highlighted in yellow, and are not shown during review. -Delete note :: Delete the note of the currently selected card, and all cards belonging to that note. -This action cannot be undone without <>. -Preview :: Render the currently selected card so that you can see what it looks like in the reviewer. -Select multiple cards :: Long-tapping on a single card will select the single card. While that card is selected, if you long-tap on another card on your screen, then all of the cards between the first selected card and the last card will be selected. This allows for actions to be performed on multiple cards at once. - -=== Searching -AnkiDroid supports all the search strings that the desktop version of Anki -does, allowing you to perform quite complex searches. Some examples: - - tag:marked :: show cards that with the tag "marked" - is:due :: show only cards that are waiting for review - front:rabbit :: show only cards where the front field is exactly "rabbit" - flag:1 :: show only cards marked with a red flag - -For a full list of the possibilities, please see the section in the -https://docs.ankiweb.net/searching.html#searching[desktop manual]. - -Alternatively, some more commonly used filters (marked, suspended, and tagged cards) can be quickly applied without manually typing them by choosing them from the overflow menu. You can also save and recall common search queries from the menu. - -[[filtered]] -== Filtered Decks - -Anki is designed to optimize the learning process, so that you study the -minimum amount necessary to remember the majority of your cards. Once the -congratulations screen is reached, further study becomes a case of diminishing -returns: the amount of extra time spent going over the same cards again is -generally not worth the moderate increase in retention you'll see. - -That said, if you have a test looming, or simply want to pass some time, it's -possible to keep reviewing even after you are shown the congratulations message. - -A 'filtered deck' is a temporary deck that contains cards based on various -criteria, such as "forgotten today", "is tagged 'hard'", and so on. After -studying cards in a filtered deck, or when the filtered deck is deleted, the -cards are automatically returned to their original deck. - -The easiest way to create a filtered deck is by long clicking on a deck and choosing the "custom study" option. - -Advanced users can create a filtered deck manually, by choosing "Create filtered deck" from the overflow menu in the deck list screen. - -For further information on filtered decks, please see the link:++https://docs.ankiweb.net/filtered-decks.html#filtered-decks--cramming++[desktop documentation]. - -[[RTL]] -== Using Right-To-Left Languages with AnkiDroid -Anki and AnkiDroid have full support for RTL languages such as Arabic, Hebrew, and Persian. - -=== Editing Fields as RTL -Fields can be marked as RTL (currently possible only from Anki Desktop) for RTL editing. When a field is marked as RTL, then the text is right-aligned in editing fields and punctuation is correctly displayed at the end (left) of sentences. Text that contains blocks of LTR characters will be properly displayed as well, with the beginning of the sentence appearing to the right of the LTR block and the end of the sentence being displayed to the left of the LTR block. - -Directionality is especially important for editing and creating RTL cloze deletions as the cloze format includes both neutral and LTR markup characters. Therefore it is recommended to use a separate note type for LTR cloze deletions and RTL cloze deletions. - -=== Displaying Fields as RTL during study -To display a field as RTL, with proper right-alignment and directionality (punctuation at left of sentences, proper flow around LTR blocks), the field should be wrapped in a div or span element with the RTL directionality specified: - -
- -[[AnkiDesktop]] -== Using Anki Desktop with AnkiDroid -Anki has a free cloud synchronization service called AnkiWeb that makes it -easy to keep your card decks in sync between mobile devices and your computer. -If you cannot use sync for some reason, it's also possible to use USB, though this method is more laborious. - -Note that AnkiDroid is not affiliated with Anki Desktop or AnkiWeb. AnkiDroid is based on Anki Desktop but it is developed by an entirely separate community of volunteers. - -++++++++++ - -++++++++++ - -=== Via Cloud Sync -Before you can use AnkiWeb, you'll first need to create an account by visiting https://ankiweb.net and clicking the *Sign Up* button. If you have used AnkiWeb in the past, you can skip this step. After signing up, see the corresponding instructions below, depending on whether you are trying to get your existing decks into AnkiDroid or out of AnkiDroid. - -==== Sync existing decks into a new AnkiDroid install -In this scenario you have some existing Anki decks that you want to copy into a new install of AnkiDroid by syncing with AnkiWeb. Open the Anki client with your existing decks (usually this would be Anki desktop, but it could also mean a version of AnkiDroid you have been using on another device), and click the synchronization button (which has two arrows in a circle) at the top right of the deck list. - -If you have never used AnkiWeb before you will need to enter your credentials if prompted, and -then press the "Upload to AnkiWeb" button to confirm overwriting the empty collection on AnkiWeb with your existing decks in Anki. Anki will upload all your cards, images and audio to AnkiWeb. If you have a lot of media, this may take some time. - -Once the synchronization has completed, open AnkiDroid in the device that you are trying to copy the existing decks into, and tap the *Sync* button in the app bar at the top of the main <>. -After entering your AnkiWeb credentials, AnkiDroid will download all your cards and media, and remember your login information for next time. - -Note that if you have any existing material in AnkiDroid before attempting to sync, you may be shown a message -asking you to choose to either download from AnkiWeb, or upload to AnkiWeb. If you are happy to lose the cards -in AnkiDroid then simply choose *Download*. If you need to merge the existing cards with AnkiDroid then you should see the -<> section before continuing. - -After the first synchronization has completed, you can click the sync button -again any time you wish to synchronize your changes to the cloud. Only changes -made since the previous sync will be sent, so subsequent syncs are a lot -faster. - -If you add some new cards on the desktop computer and want to sync them to -AnkiDroid, you'd repeat the same basic process: sync on desktop (or close the -program, as it syncs automatically on close by default), and then tap the sync -button on AnkiDroid. - -==== Sync from AnkiDroid to Computer -The process of syncing from AnkiDroid to computer is essentially the same as syncing from computer to -AnkiDroid, but in reverse. - -From the <>, tap the sync button in the top right (it has two arrows -in a circle). If it's your first time using AnkiWeb, you may need to -enter your login credentials, and then press the "upload" button to upload your AnkiDroid collection -to AnkiWeb. - -Once the synchronization has completed, open Anki Desktop on your computer and press the sync button there -(with two arrows in a circle), and Anki will download your collection. - -[[AnkiWebConflicts]] -==== Dealing with merge conflicts on AnkiWeb -Although it should not happen often, occasionally you may end up in the position where your cards on AnkiDroid can -not be automatically merged with the cards on AnkiWeb. In this case it's necessary to choose to either upload to or download from -AnkiWeb, which would overwrite any changes on the other side. - -If you have new cards on both sides which you want to keep, -before syncing you can <> for each deck containing new cards from AnkiDroid, then when you do the sync -choose "download" to download from AnkiWeb. After the synchronization has completed, you can import the decks you previously exported from AnkiDroid, -as per the <>. - -=== Via USB - -If you don't have regular internet access, it's still possible to copy decks -back and forth to your device, by using USB. - -The USB method works by importing or exporting all your decks at once. -This means that unlike syncing via AnkiWeb, you can't make changes from -two locations at once and then merge them. Instead, if you wish to add cards -on the desktop, you need to make sure you export the latest version of your -collection from your mobile device first, or you'll end up losing any reviews -done on the mobile device. - -Thus the workflow you would typically use is to export your collection from -your mobile device and import it into the desktop, make modifications on the -desktop, and then export your collection and import it back into your mobile -device. - -AnkiDroid can't directly import text files. If you wish to do that, you'll -need to do that with the desktop program, and then import your collection into -AnkiDroid. - -==== Copy all decks from Anki Desktop to AnkiDroid via USB - -On your computer: - - . Open the desktop program. - . Choose File>Export from the menu. - - . Click the 'Export...' button. Make sure to leave "all decks" selected, as - it's not possible to import individual decks into AnkiDroid. "Include - scheduling information" must also remain checked. - . Anki will automatically create a collection.apkg on your desktop. If the - file is named something else, please see the previous step again. - . Connect your Android device to your computer via the USB cable. - . Open the file explorer on your computer and view the contents of your Android device. - . Locate the AnkiDroid folder. - . Drag the collection.apkg file from your desktop into this AnkiDroid folder. - -Then in AnkiDroid: - - . From the main decks screen, tap "Import file" from the menu - . Tap on "Collection" and then confirm - -Once complete, the decks on your device will have been replaced with the decks from your desktop. See the section on -<> for more help with importing. - -==== Copy all decks from AnkiDroid to Anki Desktop via USB - -The process to copy your decks from AnkiDroid to Anki Desktop is essentially the same as above, but in reverse. - - . Start with your device disconnected from USB - . Choose "Export collection" from the main menu in the Deck Screen - . Ensure "Include scheduling information" remains checked and press *OK* - . Connect device to computer using USB - . Copy the "collection.apkg" from the path specified in the message to the desktop on your computer - . Double click on the file to import into Anki Desktop - -See the <> below for more detailed information on exporting from AnkiDroid. - -[[importing]] -== Importing Anki Files -You can import Anki files (with .apkg file format) directly into AnkiDroid. Other file formats cannot be imported directly into AnkiDroid, however -flashcards from most other applications can be imported into Anki Desktop on your computer, which can then be <>. -See the https://docs.ankiweb.net/importing.html#importing[importing section of the Anki Desktop manual] for help on importing into Anki Desktop. - -As in Anki Desktop, AnkiDroid distinguishes between https://docs.ankiweb.net/exporting.html#exporting[the two types of .apkg files] -("collection package" and "deck package") based on the filename. Collection packages have the name "collection.colpkg", and when imported will -completely _replace all contents_ in AnkiDroid. Any apkg file which is _*not*_ named something that ends in ".colpkg" will be treated as a deck package, -which will be _merged with any existing content_ when imported into to AnkiDroid. - -You can import .apkg Anki collection files into AnkiDroid either by opening them using the standard Android system, or by manually -importing them from within AnkiDroid: - -=== Open the file using Android -Apkg files are automatically associated with AnkiDroid, so for example if you open a .apkg email attachment which you sent to yourself, then -AnkiDroid will automatically open the file and confirm if you want to import it. Simply click OK and the apkg file will be imported. - -=== Import the file manually in AnkiDroid -You can also manually import .apkg files as follows: - - * Connect your device to your computer using USB - * Copy the .apkg from your computer to the AnkiDroid folder on your device - * Open AnkiDroid on your device - * From the main menu in the deck list, choose *Import* - * Choose the apkg file you just copied to your device when prompted - * Tap OK - -== Importing Anki Databases (.anki2) - -AnkiDroid does not support directly importing Anki database (`.anki2`) files. A database import will replace your collection with the contents the provided file. If you want to perform a full replacement, you should import a `collection[.apkg/.colpkg]` created in the app with the export function. - -=== Importing anki2 files manually - -This is not officially supported, but `.anki2` files can manually be imported if needed, in cases of troubleshooting for example: - -* Create a new folder on your Android file system -* Obtain the full path to the folder as provided by your file manager, this will typically appear as: `/storage/emulated/0/` -* Place the `.anki2` file in the newly created folder -* Rename the file to `collection.anki2` -* (If applicable) Temporarily log out of your AnkiWeb account: `Settings - AnkiDroid - AnkiWeb account` -* Open `Settings - Advanced - AnkiDroid Directory` and set the AnkiDroid Directory to the newly created folder. - -[[exporting]] -== Exporting Anki Files -AnkiDroid can export your flashcards in the .apkg Anki file format so that you can import them into Anki Desktop, or share them with other people. -As in Anki Desktop, you can either export a https://docs.ankiweb.net/exporting.html#packaged-decks[collection package or deck package], depending -on what you are trying to achieve. - -There are two export options available: "include scheduling information" and "include media". Generally the default options are sufficient, -if you choose not to include scheduling information, Anki will assume that you are sharing the deck with other people, -and will remove marked and leech tags so that they will have a clean copy of it. - -=== Exporting collection package -When exporting for use in Anki Desktop, you generally want to https://docs.ankiweb.net/exporting.html#collection-colpkg[export your entire collection], including all your review history etc. - -From the main menu in the decks screen: - - . Tap the *Export* item in the menu. - . Tap *OK* using default options - . Tap *OK* again to email the exported collection.apkg file to yourself, or alternatively you can manually copy to your computer using USB - -To import the file on your computer: - - . Save the file "collection.apkg" to your desktop - . Double-click on the file to start Anki. - . Confirm you wish to replace, so that the deck from your mobile device - overwrites the old data on your desktop. - . After importing, you can delete the apkg file on your desktop if you wish. - -=== Exporting deck package -If you want to share a deck in AnkiDroid with another user, you can export a deck package. - -From the main menu in the decks screen: - - . Long tap on the deck you wish to export - . Tap *Export* - . Tap *OK* using the default options - . Tap *OK* again to email the exported apkg to another user - - -[[backups]] -== Automatic Backups - -AnkiDroid will automatically create backups of your collection for you. The backups include all your cards and statistics, but do not include -sounds or images. - -The backup is taken in the background when you first start the app. A backup will only happen if more than 5 hours has elapsed since the last time a backup was created. -By default, AnkiDroid will store the last 8 backups; this number can be changed in the main settings. - -You can restore a backup by choosing the *restore from backup* option from the main menu of the <>. - -[[settings]] -== Preferences - -The preferences screen can be accessed by opening the navigation drawer, and choosing "Settings". - It allows you to customize various application settings and how AnkiDroid appears. - -The Preferences screen is divided up into different sections, which are -covered below. - -=== AnkiDroid -These are the general settings which affect the whole app: - -AnkiWeb account:: Change the account used for syncing with the cloud. For more information on syncing, please see <>. - -Fetch media on sync:: By default, AnkiDroid will sync sounds and images as well as your cards and review history. - If you disable this option, sounds and images will not be downloaded from or uploaded to the sync server by AnkiDroid. - -Automatic synchronization:: Enable this option if you want AnkiDroid to sync every time you open and close the app. There is a limit of once every ten minutes for this behavior. Once a sync begins you can cancel it by pressing your device's back button, however it can take some time for the cancellation to take effect. - -+ -Users that want more fine-grained control over when sync occurred might like to use a 3rd party app like Tasker to automate synchronization. See the https://github.com/ankidroid/Anki-Android/wiki/AnkiDroid-API#sync-intent[API documentation] for more information on this. - -Deck for new cards:: The default of "Use current deck" means that Anki saves the last-used note type for each deck -and selects it again then next time you choose the deck (and, in addition, will start with the current deck selected when choosing -Add from anywhere). The other option, "Decide by note type," saves the last-used deck for each note type -(and opens the add window to the last-used note type when you choose Add). This may be more convenient if you always use a single note -type for each deck. - -Language:: Change the language. Note: AnkiDroid translations are contributed by volunteers. If you find missing or incorrect translations, -feel free to contribute to the translation project. More details can be found on the https://github.com/ankidroid/Anki-Android/wiki/Contributing#translate-ankidroid[AnkiDroid Wiki]. - -Error reporting mode:: Control whether or not AnkiDroid asks your permission before sending error reports to our error reporting system -when AnkiDroid crashes. You can also disable the reporting feature entirely if you wish. - -==== Notifications -This subsection allows you configure when and how AnkiDroid shows alerts in the Android notification bar. - -Notify when :: *Never notify* will disable all notifications from AnkiDroid. *Pending messages available* will only show important status updates like when a sync completed. *More than n cards due* will show a notification when you have more than n cards due (requires the widget to be enabled). - -Vibrate:: Checking this will make your device vibrate when showing a notification - -Blink light:: Checking this will make your device light blink when an unread notification exists (if your device has a notification LED) - - -=== Reviewing - -The reviewing screen allows you to customize how AnkiDroid behaves when you're -reviewing cards. Note that only the reviewing settings which are applied to *all decks* are shown here. There are more settings related -to reviewing which are *deck specific*. These deck specific settings are located in *Deck options*. - -New card position :: Controls when new cards are shown: either mixed with, after, or before all reviews. - -Start of next day :: Controls when AnkiDroid should start showing the next day's cards. -The default setting of 4AM ensures that if you're studying around midnight, you won't have two days worth of cards shown to you in one -session. If you stay up very late or wake up very early, you may want to adjust this to a time you're usually sleeping. - -Learn ahead limit :: The Learn ahead limit tells AnkiDroid how to behave when there is nothing left to study in the current deck -but cards in learning. The default setting of 20 minutes tells AnkiDroid that cards should be shown early if they are due to be shown in -less than 20 minutes and there's nothing else to do. If you set this to 0, Anki will always wait the full period, showing the congratulations -screen until the remaining cards are ready to be reviewed. - -Timebox limit:: Timeboxing is a technique to help you focus by dividing a longer activity (such as a 30 minute study session) into smaller -blocks. If you set the timebox time limit to a non-zero number of minutes, AnkiDroid will periodically show a message saying you how many -cards you've managed to study during the prescribed time limit. - -==== Display -This subsection relates to the way cards are displayed during reviewing - -Keep screen on :: Ignore the automatic screen timeout setting in Android to always keep the screen on. - -Fullscreen mode :: Switches to an immersive fullscreen mode so that you can use more of the screen. You can choose between "Hide the system bars" which will hide the system status bar, action bar, and bottom navigation buttons. Alternatively you can choose "Hide the system bars and answer buttons", which will hide everything except for the actual card content itself. You can temporarily exit fullscreen mode by swiping inwards (i.e. down or up) from the system bars. - -+ -Note that immersive fullscreen mode is only supported on Android 4.4+ - -Center align :: By default AnkiDroid tries to show cards exactly as they are shown on Anki Desktop, however if you prefer your cards -to be center aligned vertically in AnkiDroid then you can enable this feature. - -Show button time :: By default, the answer buttons will display the time a card will -next be shown. If you disable this option, the times will not appear, and only labels like "Again", "Good" and -"Easy" will be shown. - -Card zoom :: Here you can increase the zoom level of the card content (excluding images). You can use this option if you want to increase the font size for all cards. - -Image zoom :: Here you can increase the zoom level of any images embedded in your cards. - -Answer button size :: If you find it difficult to press the answer button, you can use this setting to make it bigger. - -Show remaining :: Disabling this allows you to hide the card count in the top left of the screen. - -==== Whiteboard -This subsection controls the whiteboard in the reviewer. -Note: the whiteboard must be enabled in each deck individually from the menu in the study screen. - -Stroke width :: Control the stroke width of the whiteboard. Reducing the stroke width may allow you to draw with more detail. - -Black strokes :: Use black strokes instead of color, which may reduce memory usage. Note: this setting doesn't apply when night mode is enabled. - -==== Automatic display answer -The automatic display answer feature allows you to have the answer shown automatically after some timeout period. You can also have the next -question shown automatically; in this case the card is assumed to be failed (i.e. the again button is automatically chosen) - -Time to show answer :: Time to wait until answer is automatically shown - -Time to show next question :: Time to wait until next question is automatically shown. - -=== Fonts -In this screen you can change the font used by AnkiDroid, and some scaling options related to fonts. -See the <> section for more information about using custom fonts. - -Default font :: Choose the default font used by the AnkiDroid reviewer. You can add fonts to this list by copying them to the "fonts" folder. - -Default font applicability :: The default setting is to only use the default font when no font has been specified in the card styling -via Anki Desktop, however you can also force the default font to be applied, ignoring any font specification in the card styling. - -Browser and editor font :: The font to be used by the browser and editor - -Card browser font scaling :: Lets you change the font size used in the card browser. - -[[gestures]] -=== Gestures -AnkiDroid allows you to customize the interface, so that actions you perform -frequently can be accomplished quickly by using tap and swipe gestures. - -==== Actions -The following gestures can be used: - - * Swipe up - * Swipe down - * Swipe left - * Swipe right - * Double touch - * Touch top - * Touch bottom - * Touch left - * Tough right - -The following actions are available for each gesture: - -No action :: Don't do anything. Useful if you want to disable certain swipes, tap zones and so on. - -Answer button 1 :: When the answer screen is shown, choose the red -button, indicating you wish to review the card again soon. This is useful when -you forgot a card or wish to review it more frequently. -When the question is shown, this action (and all other answer actions below) will simply show the answer. - -Answer button 2 :: When the answer screen is shown, choose the second button from the left, -generally indicating you found the card hard to remember. - -Answer button 3 :: When the answer screen is shown, choose the third button from the left. - -Answer button 4 :: When the answer screen is shown, choose the fourth button from the left (when applicable). - -Undo :: Undoes the last action. - -Edit card :: Edits the current card. - -Mark :: Adds a tag called "Marked" the current note, so it can be easily found in a search. - -Lookup expression :: When the lookup feature is enabled (in advanced settings), lookup an expression -in the selected dictionary. Note: the expression needs to be copied to the clipboard before this action will work. - -Bury card :: Hides the current card from review. - -Suspend card :: Prevent current card from being shown during review until you unsuspend it via the card browser. - -Delete note :: Deletes the currently shown note and all of its cards. - -Play media :: Replay any audio on the card. - -Abort learning :: Stop reviewing and go back to the deck overview page. - -Bury note :: Bury the current note (i.e. hide it until the next day). - -Suspend note :: Suspend the current note (i.e. hide it until you unsuspend it). - -Toggle Red Flag :: Enables the red flag, unless the flag is already red, in which case the flag is disabled. - -Toggle Orange Flag :: Enables the orange flag, unless the flag is already orange, in which case the flag is disabled. - -Toggle Green Flag :: Enables the green flag, unless the flag is already green, in which case the flag is disabled. - -Toggle Blue Flag :: Enables the blue flag, unless the flag is already blue, in which case the flag is disabled. - -Remove Flag :: Removes the flag from the card. - -=== Advanced -Some less common features for advanced users are shown here - -Collection path :: Change the location where AnkiDroid's data is stored (not recommended) - -Force full sync :: -Tap this item to force a full upload or download on the next sync (for example, because you accidentally deleted a deck on one side and want to restore the deck rather than having its deletion synchronized). - -Advanced Statistics :: -Take into account the effect of future reviews in the 'Forecast' graph. More info <>. - -==== Workarounds -Type answer into the card :: -If you have set up your cards to ask you to type in the answer (as explained in https://docs.ankiweb.net/templates/intro.html#card-templates[this section of the desktop manual]), AnkiDroid will display a keyboard on such cards and allow you to check your answer. - -+ --- -In order to improve user experience when working with the whiteboard and gestures, we use a typing box separate from the card, which is inconsistent with the way the feature works on Anki Desktop. - -For full consistency with Anki Desktop, you can enable this option which allows you to save screen area, and choose an appropriate font (e.g. Japanese vs Chinese) for the input box. --- - -Input Workaround :: -Some older devices couldn't gain focus into the text input box for typed-answer fields, so this was added (Hidden for API > 14). - -Longclick Workaround :: -Some older devices couldn't detect longclick for initiating selecting/copying of text, so this was added (Hidden for API > 10). - -Fix for Hebrew Vowels :: -Some older devices couldn't render Hebrew text, so this feature was added which allows the user to download and install a Hebrew font which is known to work (Hidden for API > 15). - -Text to Speech :: -Enable this option to have Android read out all the text on your flashcards using the default text to speech engine. Google's built-in TTS engine should work; 3rd party TTS engines may or may not. -AnkiDroid will ask you to select the language for the front and back of your cards once for each deck on the first time you review a card in that deck. -To change the language or disable TTS for a given deck after making your initial choice, you'll need to use the "reset languages" option described below and reconfigure for each deck. - -+ --- -Alternatively, if you want only fragments of cards to be read aloud, or if you want to set the TTS language for multiple decks at once, you can insert `` tags into <>. For example, with the following template for the back of the card - -[subs=+quotes] -.... -{{FrontSide}} - -
- -**{{EnglishTranslation}}**** -

-{{Example}} -.... - -only the `EnglishTranslation` field will be read aloud in a British English voice; the `Example` field, lying outside the `` tag, won't be read aloud. Every `` tag needs to have the following two attributes: - - * `service`: should be set to `"android"`, otherwise the contents of the `` tag won't be read aloud; - * `voice`: used to select the TTS language; should be a https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes[two- or three- letter language code], optionally followed by an underscore and a https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2[two-letter country or region code]. A frequently updated list of languages supported by the Google TTS engine can be found on its https://en.wikipedia.org/wiki/Google_Text-to-Speech[Wikipedia page]. - -To make both AnkiDroid and the https://ankiatts.appspot.com/[AwesomeTTS] plugin to the desktop application use a TTS engine to read aloud certain card fragments, put the `` tag inside the `` tag recognised by AwesomeTTS, or vice versa. An example: - -.... - - - {{EnglishTranslation}} - - -.... - -AnkiDroid automatically ignores `` tags selecting an unknown TTS service. In contrast, AwesomeTTS may display a warning message on encountering the `` tag; to suppress it, uncheck the two _Show errors_ checkboxes on the _Playback_ tab of the _AwesomeTTS: Configuration_ dialog in the desktop application. - -_This feature may be removed in the future in favor of a separately downloadable plugin_ --- - -Lookup Dictionary :: -Dictionary to use to lookup words copied to the clipboard in the reviewer. After setting up a dictionary, do the following to perform the lookup: - -+ --- - * Longclick on the text you want to copy in the reviewer - * After selecting the word you want to copy, press the "copy" icon in the app bar at the top of the screen - * Tap once anywhere on the flashcard - * A magnifying glass icon should appear, which performs the lookup when clicked - -Alternatively, the lookup action can be performed via a gesture. - -_This feature will likely be removed in the future in favor of a plugin_ --- - -Reset Languages :: -Useful for resetting the TTS language - -eReader (up/down buttons) :: -Support for eReader hardware buttons (see https://github.com/ankidroid/Anki-Android/issues/1625[issue 1625]) - -+ -_This feature will likely be removed in the future in favor of a plugin_ - -eReader Double Scrolling :: -Double the scrolling distance when using the eReader hardware buttons - - -== Advanced Features -[[mathjax]] -=== MathJax Support -Mathjax is a modern typesetting library for math and chemistry. AnkiDroid supports Mathjax cards out of the box. Mathjax is configured to expect TeX formatting, with `\(` and `\)` delimiting inline equations and `\[` and `\]` for display equations. - -To try it out, enter the following into a field: - -... -\(\sqrt{x}\) -... - -and preview the card. - -For more details, see https://docs.ankiweb.net/math.html#mathjax[Mathjax Support] in the Anki Manual. - -https://www.reddit.com/r/Anki/comments/ar7lxd/how_to_load_mathjax_color_extension_on_anki/egm6u5j/[Previous workarounds] are no longer necessary as of AnkiDroid 2.9. - -[[reverseCards]] -=== Reverse Cards -The Anki system has https://docs.ankiweb.net/getting-started.html#note-types[built-in note types which allow you to review cards in both directions]. -When <> in AnkiDroid, you should choose one of these note types, such as "Basic (and reversed card)", -which will automatically generate a reverse card for you. - -++++++++++ - -++++++++++ - -If you used the wrong note type when adding your material, you can change the note type via the <>, -or you can change the note type for multiple cards at once using the browser in Anki Desktop. -To do this, follow the instructions in the <>, then in Anki Desktop open the browser, -select the cards you want to change, then choose *Change note type* from the menu. - -Alternatively, if your cards are using a custom card layout which doesn't include a reverse card, you can edit the note type to include a reverse card by following the instructions in the https://docs.ankiweb.net/templates/generation.html#reverse-cards[reverse cards section] of the Anki Desktop user manual. While less convenient than using Anki Desktop, it is possible to edit the note type from directly within AnkiDroid as well; see the <> for more on this. - -[[customFonts]] -=== Custom Fonts - -AnkiDroid allows you to use non-system fonts on your cards. To set them up properly, -it is strongly recommended to use the official method that is used by Anki Desktop. Please see -https://docs.ankiweb.net/templates/styling.html#installing-fonts[the corresponding section in the desktop -manual] for more information. - -Alternatively, you can create a new subfolder "fonts" in the main AnkiDroid directory (i.e. the folder which contains the "backups" subfolder, specified under Settings > Advanced > AnkiDroid directory), copy a compatible font file (i.e. .ttf) there, -and then set this as the default font under Settings > Fonts > Default font. -Note: this method will change the default font for *all* of your cards, whereas the official method can be more specific. Also, if you sync with AnkiWeb, using this method will lead to cards being displayed differently on different devices. - -Only fonts in the ttf format are officially supported in Anki/AnkiDroid; -the https://www.google.com/get/noto/#/[Google Noto] font set is highly recommended for all languages, -and some other free fonts can be found https://github.com/ankidroid/Anki-Android/wiki/Freely-distributable-fonts[here]. - -Please note that AnkiDroid has to load the entire font into memory in order -to use it, and fonts for Asian languages can be quite large. If you have an -older device and notice AnkiDroid crashing frequently after installing a -font, you may have exceeded your device's memory limits. For Google Noto, -it's not recommended to use the combined CJK font, rather get the individual languages https://github.com/googlei18n/noto-cjk[separately from here]. - -*Note 1*: If you have "Fetch media on sync" disabled, you may need to manually copy the font file from Anki Desktop to your AnkiDroid/collection.media folder. - -*Note 2*: If you can't get your font to work after following the steps in here and the Anki Desktop manual, please refer to the FAQ for https://github.com/ankidroid/Anki-Android/wiki/FAQ#i-followed-the-instructions-in-the-manual-but-i-still-cant-get-my-custom-font-to-work[detailed steps on how to debug font issues]. - - -[[customizingCardLayout]] -=== Custom Card Layout -The layout of flashcards is completely customizable, although this is an advanced topic with a fairly steep learning curve, and you will probably find it a lot more convenient to do the customization with <>. - -The https://docs.ankiweb.net/templates/intro.html#card-templates[card templates section] of the Anki Desktop manual has detailed instructions on how to edit note types, and most of the actions discussed there are also available from AnkiDroid by tapping "cards" at the bottom of the note editor, or choosing the "manage note types" option in the deck picker. Since detailed information on customizing card layouts is available in the Anki desktop manual, it will not be repeated here. - -There is an https://github.com/ankidroid/Anki-Android/wiki/Advanced-formatting[advanced formatting page] on the AnkiDroid wiki with various hints on how you can get the most out of your card formatting, and we encourage you to read it, and edit it freely if you have any tips that you'd like to share with the community. - -[[typeInAnswer]] -=== Type in the answer feature - -AnkiDroid allows you to type in the correct answer and then compare it to the right answer. You have to set this up with Anki desktop, -as described in the https://docs.ankiweb.net/templates/fields.html#checking-your-answer[Anki Desktop manual]. - -Anki desktop replaces the “{{type:NN}}” field on -the front of a card with an input box in the card. On AnkiDroid it is replaced with a “......” prompt instead, and a text -input box is shown at the bottom. The comparison between typed text and -the correct text is shown on the answer side in place of the -“{{type:NN}}” field there, like on Anki desktop. - -The text input box and the soft keyboard can be hidden by ticking -“Disable typing in answer” in the preferences. - -Even with typing disabled, the correct answer is shown on the answer -side. This is done on purpose; otherwise the correct answer might not -be shown at all. - -To hide the comparison (e.g. because the correct answer is shown anyway), the HTML id -“typeans” can be used. Add “.mobile #typeans {display: none;}” to the -https://docs.ankiweb.net/templates/styling.html#card-styling[card styling] using Anki Desktop. - -The type answer prompt and the comparison have more classes that -can be used to change the way they are displayed. Some of these are -the same as on Anki Desktop, some are specific to AnkiDroid. - -The comparison uses three classes, typeGood, typeBad and typeMissed -to add green, red and gray background to the typing comparison. These -three classes are used on Anki desktop as well. - -The “......” prompt has the class “typePrompt”. - -When typing is set to off in the preferences, the class “typeOff” is -added to the prompt on the question side, and to the div element -containing the comparison on the answer side. This class can be used -to show the type prompt or to hide the typing comparison in -this case. - -[[advancedStatistics]] -=== Advanced Statistics - -If Advanced Statistics are enabled, it changes the 'Forecast' graph so that it shows the estimated number of reviews that will be due on a given day in the future taking into account future reviews, learning new cards and failing cards. The bars and the left axis show the number of cards due on each day if you study all cards each day, while the line and the right axis show the number of unseen (shown as 'learn'), young and mature cards your deck or collection will consist of if you study all cards each day. The forecast graph does count reviews that are currently overdue. It assumes that the overdue cards will be reviewed according to the 'maximum reviews/day' deck option. - -Advanced Statistics can be enabled in Settings -> Advanced -> Advanced Statistics (in plugin section). - -The outcome of future reviewing, learning or failing cards affects reviews after that future review. To take this into account, the probability of each outcome is computed from the review log. Then the outcome is randomly chosen, such that an outcome which is more likely according to the review log is more likely to be chosen than an outcome which is less likely according to the review log. The settings all affect how the effect of the outcome of future reviews on subsequent reviews is taken into account. - -Compute first n days, simulate remainder :: -If this setting is set to a number greater than 0, instead of randomly choosing an outcome, each possible outcome is taken into account in the simulation, together with its probability. The probability is taken into account for the graph and for future reviews in which it results, which also affect the graph. -One review has a couple of possible outcomes (say 4), which all result in a review. That review also has a couple of possible outcomes and so on. If many reviews are simulated this way, many reviews (4 x 4 x 4 x ... ) have to be taken into account which increases the time it takes to compose the graph. -Therefore, for reviews later than n days from now are simulated by randomly choosing an outcome. - -+ -In summary, higher n gives a more accurate graph, but it takes more time to compose the graph. - -Precision of computation :: - -Reviews which occur with a probability smaller than 100% minus the configured precision of the computation are simulated by randomly choosing an outcome rather than taking into account each possible outcome. This setting is only applicable if the first n days are computed. -If Advanced Statistics are disabled, the 'Forecast' graph shows the estimated number of reviews that will be due on a given day in the future if you do not review cards, learn no new cards and fail no cards. - -+ -In summary, higher precision gives a more accurate graph, but it takes more time to compose the graph. - -Number of iterations of the simulation :: -Composes the graph several times and then displays the average of these graphs. -Each time the graph is composed, another outcome might be randomly chosen. If we average many outcomes which are randomly chosen taking into account the probabilities from the review log, the average outcome will likely be close to the average of the probabilities from the review log. -If we average many graphs, the average graph will likely be close to the graph which is generated by taking into account all possible outcomes. -If the number of graphs which are averaged is not too high, it will be faster than taking into account all possible outcomes. - -+ -In summary, a higher number of iterations gives a more accurate graph, but it takes more time to compose the graph. - -[[reminders]] -=== Reminders -AnkiDroid can remind you to devote some time to reviewing cards every day at a specific time via Android's notification framework. -You can configure reminders for each options group independently. -To configure a notification go to Deck options > Reminders, then tick the checkbox and select the time you want to be notified at. -To stop receiving notifications go to Deck options > Reminders and unmark the checkbox. - -Notifications only work for top level decks. Please let us know if you want us to add notifications for subdecks too. - -[[setlanguagehint]] -=== Automatic Language Selection -AnkiDroid has an in Automatic Language Selection feature in the Note Editor starting with AnkiDroid 2.13. This feature allows you to define a default language to be used in your keyboard for a field in a note type. - - -For example, if you have Russian and English note fields, and your keyboard supports the setImeHintLocales Android API, the keyboard layout will switch to Russian in the first field and back to English in the second automatically when the fields get focus. https://youtu.be/JrxDjTrRhBE[Checkout video reference for demonstration] - -[[keyboardShortcuts]] -== Keyboard Shortcuts - -=== Home Screen - -|=== -|Shortcut |Purpose - -|kbd:[A] -|Add Note - -|kbd:[B] -|Card Browser - -|kbd:[Y] -|Sync -|=== - -=== Reviewer - -|=== -|Shortcut |Purpose - -|kbd:[1],kbd:[2],kbd:[3],kbd:[4] -|Press the nth answer button - -|Gamepad Y -|Flip Card/Press the first answer button - -|Gamepad X -|Flip Card/Press the second answer button - -|Gamepad B -|Flip Card/Press the third answer button - -|Gamepad A -|Flip Card/Press the fourth answer button - -|kbd:[Space],kbd:[Enter] -|Flip Card/Answer Good - -|kbd:[e] -|Edit Note - -|kbd:[*] -|Mark Note - -|kbd:[-] -|Bury Card - -|kbd:[=] -|Bury Note - -|kbd:[@] -|Suspend Card - -|kbd:[!] -|Suspend Note - -|kbd:[r],kbd:[F5] -|Replay Media - -|kbd:[z] -|Undo -|=== - -=== Note Editor -|=== -|Shortcut |Purpose - -|kbd:[Ctrl+Enter] -|Save Note - -|kbd:[D] -|Select Deck - -|kbd:[L] -|Card Template Editor - -|kbd:[N] -|Select Note Type - -|kbd:[T] -|Edit Tags - -|kbd:[Ctrl+P] -|Preview Note - -|kbd:[Ctrl+B] -|Bold - -|kbd:[Ctrl+I] -|Italic - -|kbd:[Ctrl+U] -|Underline - -|kbd:[Ctrl+R] -|Insert Horizontal Rule - -|kbd:[Ctrl+H] -|Insert Title - -|kbd:[Ctrl+F] -|Change Font Size - -|kbd:[Ctrl+M] -|Insert MathJax Equation - -|kbd:[Ctrl+Shift+C] -|Insert New Cloze Deletion - -|kbd:[Ctrl+Alt+Shift+C] -|Insert Cloze Deletion using existing number - -|kbd:[Ctrl+1..0] -|Insert User-Defined HTML -|=== - -=== Card Browser -|=== -|Shortcut |Purpose - -|kbd:[Ctrl+A] -|Select All - -|kbd:[Ctrl+E] -|Edit Note - -|kbd:[Ctrl+D] -|Change Deck - -|kbd:[Ctrl+K] -|Mark Note - -|kbd:[Ctrl+Alt+R] -|Reschedule -|=== - - -=== Card Template Editor -|=== -|Shortcut |Purpose - -|kbd:[Ctrl+P] -|Preview Changed - -|=== - - - -[[betaTesting]] -== Beta testing -If you want to try out the latest features in AnkiDroid, you can sign up for the beta testing program as follows: - - . Visit the https://play.google.com/apps/testing/com.ichi2.anki[Google Play Beta page] - . Click *Become a beta tester* - -After following these steps, the latest beta version will automatically be installed by Google Play in the same way as ordinary updates. - - -Please submit any bugs you find in these development versions to the AnkiDroid issue tracker, as per the link:help.html[main help page]. - -If you wish to leave the testing program at any time, simply visit the https://play.google.com/apps/testing/com.ichi2.anki[Google Play Beta page] and click *Leave the test* - -[[alphaTesting]] -== Alpha testing -If you are more adventurous, you can also become an alpha tester, by joining the https://groups.google.com/forum/#!forum/ankidroidalphatesters[alpha testers group] -in addition to performing the above steps for beta testing. - -++++++++++ -
-++++++++++ - -[[contributing]] -== Contributing to AnkiDroid -AnkiDroid is an open source project, and its development relies on contributions from volunteers. Here are some of the ways you can contribute to the AnkiDroid project: - -Get involved :: Rate the app, join the https://groups.google.com/forum/#!forum/anki-android[AnkiDroid forum] and answer questions for other users, submit bug reports, become a <>, etc. More detailed information on ways you can contribute as a non-developer can be found on the https://github.com/ankidroid/Anki-Android/wiki/Contributing[Wiki]. - -Translate :: Translations of AnkiDroid and this user manual are all contributed by users, and are greatly appreciated. -See the https://github.com/ankidroid/Anki-Android/wiki/Contributing#translate-ankidroid[translating] wiki page for detailed instructions on how to contribute translations. - -Develop :: The source code for AnkiDroid is available on our main https://github.com/ankidroid/Anki-Android[Github page], and bug fixes as well as new features are very welcome. -Before investing a lot of time on working on a new feature, you may like to ask on the forum first if it's likely to be merged into the main project, as not all features will be accepted. -If you are just getting started with Android programming, feel free to ask on the forum for some tips and/or tasks which are suitable for beginners. diff --git a/removed-features.asc b/removed-features.asc deleted file mode 100644 index 2a22b0b..0000000 --- a/removed-features.asc +++ /dev/null @@ -1,86 +0,0 @@ -:docinfo1: -:experimental: - -= Removed Features -:sectanchors: - -== Automatic night mode color inversion - -NOTE: Removed in AnkiDroid 2.17 - -=== Feature Description - -Previously, AnkiDroid contained a very basic color inverter for card content in night mode. For example it changed white to black and black to white. It inverted *all* colors though for example green inverts to pink. These changes were frequently unwanted. - -=== Reason for removal - -This feature was introduced in 2012, before either Android or Anki had night mode functionality. - -AnkiDroid implemented Android's 'follow system' night mode functionality in 2.16, which made the functionality more -prominent. - -In 2.17, AnkiDroid was updated to use unified night mode card rendering code across the Anki ecosystem. -As color inversion was an unexpected feature for our users, and did not match Anki Desktop's behavior, it was removed. - -https://github.com/ankidroid/Anki-Android/issues/14893 - -=== Action to take - -If you are impacted by these changes, you may link:manual.html#customizingCardLayout[customize the CSS] of -your card templates using the `night_mode` selector. The css: `filter: invert(1)` - -[source,css] ----- -.card { - --text-color1: black; -} - -.card.night_mode { - --text-color1: white; -} - -.title { - color: var(--text-color1); -} - -/* filter could also be used */ - -.title { - color: red; -} - -.night_mode .title { - filter: invert(100%); -} ----- - -== Gesture Action: Answer better than recommended - -NOTE: Removed in AnkiDroid 2.17 - -=== Feature Description - -When the answer screen is shown, choose the button on the right, indicating you found the card too easy to remember and would like a much longer delay. - -=== Reason for Removal - -Previous versions of the Anki Scheduler had a variable number of buttons. The V3 scheduler always has 4 buttons, so this option no longer has unique functionality. - -=== Action to take - -The functionality is now equivalent to 'Answer easy', either reassign the action, or remove it. - -== Gesture Action: Answer recommended (green) - -NOTE: Removed in AnkiDroid 2.17 - -=== Feature Description - -When the answer screen is shown, choose the green button. -This is the button you should end up using the most. - -Previous versions of the Anki Scheduler had a variable number of buttons. The V3 scheduler always has 4 buttons, so this option no longer has unique functionality. - -=== Action to take - -The functionality is now equivalent to 'Answer good', either reassign the action, or remove it. \ No newline at end of file diff --git a/storage-migration-error.asc b/storage-migration-error.asc deleted file mode 100644 index 6d9389b..0000000 --- a/storage-migration-error.asc +++ /dev/null @@ -1,54 +0,0 @@ -:docinfo1: -= Unexpected error during Storage Migration -:sectanchors: - -There was an error copying your media to a folder supported by Android R. Before the process started, your data was backed up to AnkiWeb and can be restored. - -Before continuing, please: - -1. Take a backup of your collection (including scheduling + media) via Deck Picker -> Export collection - * See <> if you desire a file-based backup -2. Report the error to us: https://docs.ankidroid.org/help.html#_support - -=== Restoring from AnkiWeb Backup - -If you have reviewed a significant number of cards using AnkiDroid since the migration started, see: <> - -* Reinstall AnkiDroid -** Do not keep app data on uninstall. (*Ensure you have backed up, this will delete the AnkiDroid collection, media and backups from the AnkiDroid folder*) -* Open AnkiDroid, select "Sync from AnkiWeb", -** Log in and re-sync your collection -** Syncing will be significantly faster than AnkiDroid 2.15 -* Once you are synced, you may delete the folder collection in `/storage/emulated/0/AnkiDroid` to save space. -* Your collection is now located at `/storage/emulated/0/Android/data/com.ichi2.anki/files` - -=== Restoring a Modified Collection [[restore_modified_collection]] - -*Ensure that you have backed up your collection and media* - -* Uninstall AnkiDroid -** Do not keep app data. (**This will delete the AnkiDroid collection, media and backups**) -* Reinstall AnkiDroid -* Select 'Get Statred' -* Select 'Deck Picker -> Import' -* Import the backup which was created -* Open a file browser and browse to `/storage/emulated/0/Android/data/com.ichi2.anki/files` -* Delete the `collection.media` folder and file: `collection.media.ad.db2`. Delete `collection.media.ad.db2-journal` if it exists. -* Sync with AnkiWeb and your missing media will be downloaded - -=== Personalised Help [[help]] - -If you require personalised help, please contact us using one of the following: - -* https://groups.google.com/g/anki-android[Mailing List] -* https://discord.gg/qjzcRTx[Discord] (`#help` and/or `#mobile-apps`) -* https://www.reddit.com/r/Anki/[Our Reddit community] -* https://forums.ankiweb.net/c/ankidroid/16[AnkiWeb forums] - -=== Manual Backups [[take_manual_backup]] - -* Your migrated data exists at the folder listed in _Settings -> Advanced -> AnkiDroid directory_. This is typically: `/storage/emulated/0/Android/data/com.ichi2.anki/files` -** If you installed a parallel build, replace `com.ichi2.anki` with `com.ichi2.anki.A` -** Some file managers will be unable to access this folder. You should be able to access this folder via USB. -** Android will offer to delete this folder when AnkiDroid is uninstalled -* Your non-migrated media and backups of your collection exist at `/storage/emulated/0/AnkiDroid` From 7188f438617d4d96cfb0139a6558e92ed4d11432 Mon Sep 17 00:00:00 2001 From: krmanik <12841290+krmanik@users.noreply.github.com> Date: Fri, 2 Feb 2024 02:24:29 +0800 Subject: [PATCH 02/11] Add theme generated with `mdbook init --theme` --- .gitignore | 1 + book.toml | 6 + src/SUMMARY.md | 3 + src/chapter_1.md | 1 + theme/book.js | 697 ++++++++++++++++++ theme/css/chrome.css | 606 +++++++++++++++ theme/css/general.css | 234 ++++++ theme/css/print.css | 50 ++ theme/css/variables.css | 279 +++++++ theme/favicon.png | Bin 0 -> 5679 bytes theme/favicon.svg | 22 + theme/fonts/OPEN-SANS-LICENSE.txt | 202 +++++ theme/fonts/SOURCE-CODE-PRO-LICENSE.txt | 93 +++ theme/fonts/fonts.css | 100 +++ .../open-sans-v17-all-charsets-300.woff2 | Bin 0 -> 44352 bytes ...open-sans-v17-all-charsets-300italic.woff2 | Bin 0 -> 40656 bytes .../open-sans-v17-all-charsets-600.woff2 | Bin 0 -> 44936 bytes ...open-sans-v17-all-charsets-600italic.woff2 | Bin 0 -> 42120 bytes .../open-sans-v17-all-charsets-700.woff2 | Bin 0 -> 44988 bytes ...open-sans-v17-all-charsets-700italic.woff2 | Bin 0 -> 40800 bytes .../open-sans-v17-all-charsets-800.woff2 | Bin 0 -> 44536 bytes ...open-sans-v17-all-charsets-800italic.woff2 | Bin 0 -> 40812 bytes .../open-sans-v17-all-charsets-italic.woff2 | Bin 0 -> 41076 bytes .../open-sans-v17-all-charsets-regular.woff2 | Bin 0 -> 43236 bytes ...source-code-pro-v11-all-charsets-500.woff2 | Bin 0 -> 59140 bytes theme/highlight.css | 82 +++ theme/highlight.js | 53 ++ theme/index.hbs | 346 +++++++++ 28 files changed, 2775 insertions(+) create mode 100644 .gitignore create mode 100644 book.toml create mode 100644 src/SUMMARY.md create mode 100644 src/chapter_1.md create mode 100644 theme/book.js create mode 100644 theme/css/chrome.css create mode 100644 theme/css/general.css create mode 100644 theme/css/print.css create mode 100644 theme/css/variables.css create mode 100644 theme/favicon.png create mode 100644 theme/favicon.svg create mode 100644 theme/fonts/OPEN-SANS-LICENSE.txt create mode 100644 theme/fonts/SOURCE-CODE-PRO-LICENSE.txt create mode 100644 theme/fonts/fonts.css create mode 100644 theme/fonts/open-sans-v17-all-charsets-300.woff2 create mode 100644 theme/fonts/open-sans-v17-all-charsets-300italic.woff2 create mode 100644 theme/fonts/open-sans-v17-all-charsets-600.woff2 create mode 100644 theme/fonts/open-sans-v17-all-charsets-600italic.woff2 create mode 100644 theme/fonts/open-sans-v17-all-charsets-700.woff2 create mode 100644 theme/fonts/open-sans-v17-all-charsets-700italic.woff2 create mode 100644 theme/fonts/open-sans-v17-all-charsets-800.woff2 create mode 100644 theme/fonts/open-sans-v17-all-charsets-800italic.woff2 create mode 100644 theme/fonts/open-sans-v17-all-charsets-italic.woff2 create mode 100644 theme/fonts/open-sans-v17-all-charsets-regular.woff2 create mode 100644 theme/fonts/source-code-pro-v11-all-charsets-500.woff2 create mode 100644 theme/highlight.css create mode 100644 theme/highlight.js create mode 100644 theme/index.hbs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7585238 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +book diff --git a/book.toml b/book.toml new file mode 100644 index 0000000..e5f2ede --- /dev/null +++ b/book.toml @@ -0,0 +1,6 @@ +[book] +authors = ["krmanik"] +language = "en" +multilingual = false +src = "src" +title = "AnkiDroid Manual" diff --git a/src/SUMMARY.md b/src/SUMMARY.md new file mode 100644 index 0000000..7390c82 --- /dev/null +++ b/src/SUMMARY.md @@ -0,0 +1,3 @@ +# Summary + +- [Chapter 1](./chapter_1.md) diff --git a/src/chapter_1.md b/src/chapter_1.md new file mode 100644 index 0000000..b743fda --- /dev/null +++ b/src/chapter_1.md @@ -0,0 +1 @@ +# Chapter 1 diff --git a/theme/book.js b/theme/book.js new file mode 100644 index 0000000..aa12e7e --- /dev/null +++ b/theme/book.js @@ -0,0 +1,697 @@ +"use strict"; + +// Fix back button cache problem +window.onunload = function () { }; + +// Global variable, shared between modules +function playground_text(playground, hidden = true) { + let code_block = playground.querySelector("code"); + + if (window.ace && code_block.classList.contains("editable")) { + let editor = window.ace.edit(code_block); + return editor.getValue(); + } else if (hidden) { + return code_block.textContent; + } else { + return code_block.innerText; + } +} + +(function codeSnippets() { + function fetch_with_timeout(url, options, timeout = 6000) { + return Promise.race([ + fetch(url, options), + new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), timeout)) + ]); + } + + var playgrounds = Array.from(document.querySelectorAll(".playground")); + if (playgrounds.length > 0) { + fetch_with_timeout("https://play.rust-lang.org/meta/crates", { + headers: { + 'Content-Type': "application/json", + }, + method: 'POST', + mode: 'cors', + }) + .then(response => response.json()) + .then(response => { + // get list of crates available in the rust playground + let playground_crates = response.crates.map(item => item["id"]); + playgrounds.forEach(block => handle_crate_list_update(block, playground_crates)); + }); + } + + function handle_crate_list_update(playground_block, playground_crates) { + // update the play buttons after receiving the response + update_play_button(playground_block, playground_crates); + + // and install on change listener to dynamically update ACE editors + if (window.ace) { + let code_block = playground_block.querySelector("code"); + if (code_block.classList.contains("editable")) { + let editor = window.ace.edit(code_block); + editor.addEventListener("change", function (e) { + update_play_button(playground_block, playground_crates); + }); + // add Ctrl-Enter command to execute rust code + editor.commands.addCommand({ + name: "run", + bindKey: { + win: "Ctrl-Enter", + mac: "Ctrl-Enter" + }, + exec: _editor => run_rust_code(playground_block) + }); + } + } + } + + // updates the visibility of play button based on `no_run` class and + // used crates vs ones available on https://play.rust-lang.org + function update_play_button(pre_block, playground_crates) { + var play_button = pre_block.querySelector(".play-button"); + + // skip if code is `no_run` + if (pre_block.querySelector('code').classList.contains("no_run")) { + play_button.classList.add("hidden"); + return; + } + + // get list of `extern crate`'s from snippet + var txt = playground_text(pre_block); + var re = /extern\s+crate\s+([a-zA-Z_0-9]+)\s*;/g; + var snippet_crates = []; + var item; + while (item = re.exec(txt)) { + snippet_crates.push(item[1]); + } + + // check if all used crates are available on play.rust-lang.org + var all_available = snippet_crates.every(function (elem) { + return playground_crates.indexOf(elem) > -1; + }); + + if (all_available) { + play_button.classList.remove("hidden"); + } else { + play_button.classList.add("hidden"); + } + } + + function run_rust_code(code_block) { + var result_block = code_block.querySelector(".result"); + if (!result_block) { + result_block = document.createElement('code'); + result_block.className = 'result hljs language-bash'; + + code_block.append(result_block); + } + + let text = playground_text(code_block); + let classes = code_block.querySelector('code').classList; + let edition = "2015"; + if(classes.contains("edition2018")) { + edition = "2018"; + } else if(classes.contains("edition2021")) { + edition = "2021"; + } + var params = { + version: "stable", + optimize: "0", + code: text, + edition: edition + }; + + if (text.indexOf("#![feature") !== -1) { + params.version = "nightly"; + } + + result_block.innerText = "Running..."; + + fetch_with_timeout("https://play.rust-lang.org/evaluate.json", { + headers: { + 'Content-Type': "application/json", + }, + method: 'POST', + mode: 'cors', + body: JSON.stringify(params) + }) + .then(response => response.json()) + .then(response => { + if (response.result.trim() === '') { + result_block.innerText = "No output"; + result_block.classList.add("result-no-output"); + } else { + result_block.innerText = response.result; + result_block.classList.remove("result-no-output"); + } + }) + .catch(error => result_block.innerText = "Playground Communication: " + error.message); + } + + // Syntax highlighting Configuration + hljs.configure({ + tabReplace: ' ', // 4 spaces + languages: [], // Languages used for auto-detection + }); + + let code_nodes = Array + .from(document.querySelectorAll('code')) + // Don't highlight `inline code` blocks in headers. + .filter(function (node) {return !node.parentElement.classList.contains("header"); }); + + if (window.ace) { + // language-rust class needs to be removed for editable + // blocks or highlightjs will capture events + code_nodes + .filter(function (node) {return node.classList.contains("editable"); }) + .forEach(function (block) { block.classList.remove('language-rust'); }); + + code_nodes + .filter(function (node) {return !node.classList.contains("editable"); }) + .forEach(function (block) { hljs.highlightBlock(block); }); + } else { + code_nodes.forEach(function (block) { hljs.highlightBlock(block); }); + } + + // Adding the hljs class gives code blocks the color css + // even if highlighting doesn't apply + code_nodes.forEach(function (block) { block.classList.add('hljs'); }); + + Array.from(document.querySelectorAll("code.hljs")).forEach(function (block) { + + var lines = Array.from(block.querySelectorAll('.boring')); + // If no lines were hidden, return + if (!lines.length) { return; } + block.classList.add("hide-boring"); + + var buttons = document.createElement('div'); + buttons.className = 'buttons'; + buttons.innerHTML = ""; + + // add expand button + var pre_block = block.parentNode; + pre_block.insertBefore(buttons, pre_block.firstChild); + + pre_block.querySelector('.buttons').addEventListener('click', function (e) { + if (e.target.classList.contains('fa-eye')) { + e.target.classList.remove('fa-eye'); + e.target.classList.add('fa-eye-slash'); + e.target.title = 'Hide lines'; + e.target.setAttribute('aria-label', e.target.title); + + block.classList.remove('hide-boring'); + } else if (e.target.classList.contains('fa-eye-slash')) { + e.target.classList.remove('fa-eye-slash'); + e.target.classList.add('fa-eye'); + e.target.title = 'Show hidden lines'; + e.target.setAttribute('aria-label', e.target.title); + + block.classList.add('hide-boring'); + } + }); + }); + + if (window.playground_copyable) { + Array.from(document.querySelectorAll('pre code')).forEach(function (block) { + var pre_block = block.parentNode; + if (!pre_block.classList.contains('playground')) { + var buttons = pre_block.querySelector(".buttons"); + if (!buttons) { + buttons = document.createElement('div'); + buttons.className = 'buttons'; + pre_block.insertBefore(buttons, pre_block.firstChild); + } + + var clipButton = document.createElement('button'); + clipButton.className = 'fa fa-copy clip-button'; + clipButton.title = 'Copy to clipboard'; + clipButton.setAttribute('aria-label', clipButton.title); + clipButton.innerHTML = ''; + + buttons.insertBefore(clipButton, buttons.firstChild); + } + }); + } + + // Process playground code blocks + Array.from(document.querySelectorAll(".playground")).forEach(function (pre_block) { + // Add play button + var buttons = pre_block.querySelector(".buttons"); + if (!buttons) { + buttons = document.createElement('div'); + buttons.className = 'buttons'; + pre_block.insertBefore(buttons, pre_block.firstChild); + } + + var runCodeButton = document.createElement('button'); + runCodeButton.className = 'fa fa-play play-button'; + runCodeButton.hidden = true; + runCodeButton.title = 'Run this code'; + runCodeButton.setAttribute('aria-label', runCodeButton.title); + + buttons.insertBefore(runCodeButton, buttons.firstChild); + runCodeButton.addEventListener('click', function (e) { + run_rust_code(pre_block); + }); + + if (window.playground_copyable) { + var copyCodeClipboardButton = document.createElement('button'); + copyCodeClipboardButton.className = 'fa fa-copy clip-button'; + copyCodeClipboardButton.innerHTML = ''; + copyCodeClipboardButton.title = 'Copy to clipboard'; + copyCodeClipboardButton.setAttribute('aria-label', copyCodeClipboardButton.title); + + buttons.insertBefore(copyCodeClipboardButton, buttons.firstChild); + } + + let code_block = pre_block.querySelector("code"); + if (window.ace && code_block.classList.contains("editable")) { + var undoChangesButton = document.createElement('button'); + undoChangesButton.className = 'fa fa-history reset-button'; + undoChangesButton.title = 'Undo changes'; + undoChangesButton.setAttribute('aria-label', undoChangesButton.title); + + buttons.insertBefore(undoChangesButton, buttons.firstChild); + + undoChangesButton.addEventListener('click', function () { + let editor = window.ace.edit(code_block); + editor.setValue(editor.originalCode); + editor.clearSelection(); + }); + } + }); +})(); + +(function themes() { + var html = document.querySelector('html'); + var themeToggleButton = document.getElementById('theme-toggle'); + var themePopup = document.getElementById('theme-list'); + var themeColorMetaTag = document.querySelector('meta[name="theme-color"]'); + var stylesheets = { + ayuHighlight: document.querySelector("[href$='ayu-highlight.css']"), + tomorrowNight: document.querySelector("[href$='tomorrow-night.css']"), + highlight: document.querySelector("[href$='highlight.css']"), + }; + + function showThemes() { + themePopup.style.display = 'block'; + themeToggleButton.setAttribute('aria-expanded', true); + themePopup.querySelector("button#" + get_theme()).focus(); + } + + function updateThemeSelected() { + themePopup.querySelectorAll('.theme-selected').forEach(function (el) { + el.classList.remove('theme-selected'); + }); + themePopup.querySelector("button#" + get_theme()).classList.add('theme-selected'); + } + + function hideThemes() { + themePopup.style.display = 'none'; + themeToggleButton.setAttribute('aria-expanded', false); + themeToggleButton.focus(); + } + + function get_theme() { + var theme; + try { theme = localStorage.getItem('mdbook-theme'); } catch (e) { } + if (theme === null || theme === undefined) { + return default_theme; + } else { + return theme; + } + } + + function set_theme(theme, store = true) { + let ace_theme; + + if (theme == 'coal' || theme == 'navy') { + stylesheets.ayuHighlight.disabled = true; + stylesheets.tomorrowNight.disabled = false; + stylesheets.highlight.disabled = true; + + ace_theme = "ace/theme/tomorrow_night"; + } else if (theme == 'ayu') { + stylesheets.ayuHighlight.disabled = false; + stylesheets.tomorrowNight.disabled = true; + stylesheets.highlight.disabled = true; + ace_theme = "ace/theme/tomorrow_night"; + } else { + stylesheets.ayuHighlight.disabled = true; + stylesheets.tomorrowNight.disabled = true; + stylesheets.highlight.disabled = false; + ace_theme = "ace/theme/dawn"; + } + + setTimeout(function () { + themeColorMetaTag.content = getComputedStyle(document.documentElement).backgroundColor; + }, 1); + + if (window.ace && window.editors) { + window.editors.forEach(function (editor) { + editor.setTheme(ace_theme); + }); + } + + var previousTheme = get_theme(); + + if (store) { + try { localStorage.setItem('mdbook-theme', theme); } catch (e) { } + } + + html.classList.remove(previousTheme); + html.classList.add(theme); + updateThemeSelected(); + } + + // Set theme + var theme = get_theme(); + + set_theme(theme, false); + + themeToggleButton.addEventListener('click', function () { + if (themePopup.style.display === 'block') { + hideThemes(); + } else { + showThemes(); + } + }); + + themePopup.addEventListener('click', function (e) { + var theme; + if (e.target.className === "theme") { + theme = e.target.id; + } else if (e.target.parentElement.className === "theme") { + theme = e.target.parentElement.id; + } else { + return; + } + set_theme(theme); + }); + + themePopup.addEventListener('focusout', function(e) { + // e.relatedTarget is null in Safari and Firefox on macOS (see workaround below) + if (!!e.relatedTarget && !themeToggleButton.contains(e.relatedTarget) && !themePopup.contains(e.relatedTarget)) { + hideThemes(); + } + }); + + // Should not be needed, but it works around an issue on macOS & iOS: https://github.com/rust-lang/mdBook/issues/628 + document.addEventListener('click', function(e) { + if (themePopup.style.display === 'block' && !themeToggleButton.contains(e.target) && !themePopup.contains(e.target)) { + hideThemes(); + } + }); + + document.addEventListener('keydown', function (e) { + if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; } + if (!themePopup.contains(e.target)) { return; } + + switch (e.key) { + case 'Escape': + e.preventDefault(); + hideThemes(); + break; + case 'ArrowUp': + e.preventDefault(); + var li = document.activeElement.parentElement; + if (li && li.previousElementSibling) { + li.previousElementSibling.querySelector('button').focus(); + } + break; + case 'ArrowDown': + e.preventDefault(); + var li = document.activeElement.parentElement; + if (li && li.nextElementSibling) { + li.nextElementSibling.querySelector('button').focus(); + } + break; + case 'Home': + e.preventDefault(); + themePopup.querySelector('li:first-child button').focus(); + break; + case 'End': + e.preventDefault(); + themePopup.querySelector('li:last-child button').focus(); + break; + } + }); +})(); + +(function sidebar() { + var body = document.querySelector("body"); + var sidebar = document.getElementById("sidebar"); + var sidebarLinks = document.querySelectorAll('#sidebar a'); + var sidebarToggleButton = document.getElementById("sidebar-toggle"); + var sidebarResizeHandle = document.getElementById("sidebar-resize-handle"); + var firstContact = null; + + function showSidebar() { + body.classList.remove('sidebar-hidden') + body.classList.add('sidebar-visible'); + Array.from(sidebarLinks).forEach(function (link) { + link.setAttribute('tabIndex', 0); + }); + sidebarToggleButton.setAttribute('aria-expanded', true); + sidebar.setAttribute('aria-hidden', false); + try { localStorage.setItem('mdbook-sidebar', 'visible'); } catch (e) { } + } + + + var sidebarAnchorToggles = document.querySelectorAll('#sidebar a.toggle'); + + function toggleSection(ev) { + ev.currentTarget.parentElement.classList.toggle('expanded'); + } + + Array.from(sidebarAnchorToggles).forEach(function (el) { + el.addEventListener('click', toggleSection); + }); + + function hideSidebar() { + body.classList.remove('sidebar-visible') + body.classList.add('sidebar-hidden'); + Array.from(sidebarLinks).forEach(function (link) { + link.setAttribute('tabIndex', -1); + }); + sidebarToggleButton.setAttribute('aria-expanded', false); + sidebar.setAttribute('aria-hidden', true); + try { localStorage.setItem('mdbook-sidebar', 'hidden'); } catch (e) { } + } + + // Toggle sidebar + sidebarToggleButton.addEventListener('click', function sidebarToggle() { + if (body.classList.contains("sidebar-hidden")) { + var current_width = parseInt( + document.documentElement.style.getPropertyValue('--sidebar-width'), 10); + if (current_width < 150) { + document.documentElement.style.setProperty('--sidebar-width', '150px'); + } + showSidebar(); + } else if (body.classList.contains("sidebar-visible")) { + hideSidebar(); + } else { + if (getComputedStyle(sidebar)['transform'] === 'none') { + hideSidebar(); + } else { + showSidebar(); + } + } + }); + + sidebarResizeHandle.addEventListener('mousedown', initResize, false); + + function initResize(e) { + window.addEventListener('mousemove', resize, false); + window.addEventListener('mouseup', stopResize, false); + body.classList.add('sidebar-resizing'); + } + function resize(e) { + var pos = (e.clientX - sidebar.offsetLeft); + if (pos < 20) { + hideSidebar(); + } else { + if (body.classList.contains("sidebar-hidden")) { + showSidebar(); + } + pos = Math.min(pos, window.innerWidth - 100); + document.documentElement.style.setProperty('--sidebar-width', pos + 'px'); + } + } + //on mouseup remove windows functions mousemove & mouseup + function stopResize(e) { + body.classList.remove('sidebar-resizing'); + window.removeEventListener('mousemove', resize, false); + window.removeEventListener('mouseup', stopResize, false); + } + + document.addEventListener('touchstart', function (e) { + firstContact = { + x: e.touches[0].clientX, + time: Date.now() + }; + }, { passive: true }); + + document.addEventListener('touchmove', function (e) { + if (!firstContact) + return; + + var curX = e.touches[0].clientX; + var xDiff = curX - firstContact.x, + tDiff = Date.now() - firstContact.time; + + if (tDiff < 250 && Math.abs(xDiff) >= 150) { + if (xDiff >= 0 && firstContact.x < Math.min(document.body.clientWidth * 0.25, 300)) + showSidebar(); + else if (xDiff < 0 && curX < 300) + hideSidebar(); + + firstContact = null; + } + }, { passive: true }); +})(); + +(function chapterNavigation() { + document.addEventListener('keydown', function (e) { + if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; } + if (window.search && window.search.hasFocus()) { return; } + var html = document.querySelector('html'); + + function next() { + var nextButton = document.querySelector('.nav-chapters.next'); + if (nextButton) { + window.location.href = nextButton.href; + } + } + function prev() { + var previousButton = document.querySelector('.nav-chapters.previous'); + if (previousButton) { + window.location.href = previousButton.href; + } + } + switch (e.key) { + case 'ArrowRight': + e.preventDefault(); + if (html.dir == 'rtl') { + prev(); + } else { + next(); + } + break; + case 'ArrowLeft': + e.preventDefault(); + if (html.dir == 'rtl') { + next(); + } else { + prev(); + } + break; + } + }); +})(); + +(function clipboard() { + var clipButtons = document.querySelectorAll('.clip-button'); + + function hideTooltip(elem) { + elem.firstChild.innerText = ""; + elem.className = 'fa fa-copy clip-button'; + } + + function showTooltip(elem, msg) { + elem.firstChild.innerText = msg; + elem.className = 'fa fa-copy tooltipped'; + } + + var clipboardSnippets = new ClipboardJS('.clip-button', { + text: function (trigger) { + hideTooltip(trigger); + let playground = trigger.closest("pre"); + return playground_text(playground, false); + } + }); + + Array.from(clipButtons).forEach(function (clipButton) { + clipButton.addEventListener('mouseout', function (e) { + hideTooltip(e.currentTarget); + }); + }); + + clipboardSnippets.on('success', function (e) { + e.clearSelection(); + showTooltip(e.trigger, "Copied!"); + }); + + clipboardSnippets.on('error', function (e) { + showTooltip(e.trigger, "Clipboard error!"); + }); +})(); + +(function scrollToTop () { + var menuTitle = document.querySelector('.menu-title'); + + menuTitle.addEventListener('click', function () { + document.scrollingElement.scrollTo({ top: 0, behavior: 'smooth' }); + }); +})(); + +(function controllMenu() { + var menu = document.getElementById('menu-bar'); + + (function controllPosition() { + var scrollTop = document.scrollingElement.scrollTop; + var prevScrollTop = scrollTop; + var minMenuY = -menu.clientHeight - 50; + // When the script loads, the page can be at any scroll (e.g. if you reforesh it). + menu.style.top = scrollTop + 'px'; + // Same as parseInt(menu.style.top.slice(0, -2), but faster + var topCache = menu.style.top.slice(0, -2); + menu.classList.remove('sticky'); + var stickyCache = false; // Same as menu.classList.contains('sticky'), but faster + document.addEventListener('scroll', function () { + scrollTop = Math.max(document.scrollingElement.scrollTop, 0); + // `null` means that it doesn't need to be updated + var nextSticky = null; + var nextTop = null; + var scrollDown = scrollTop > prevScrollTop; + var menuPosAbsoluteY = topCache - scrollTop; + if (scrollDown) { + nextSticky = false; + if (menuPosAbsoluteY > 0) { + nextTop = prevScrollTop; + } + } else { + if (menuPosAbsoluteY > 0) { + nextSticky = true; + } else if (menuPosAbsoluteY < minMenuY) { + nextTop = prevScrollTop + minMenuY; + } + } + if (nextSticky === true && stickyCache === false) { + menu.classList.add('sticky'); + stickyCache = true; + } else if (nextSticky === false && stickyCache === true) { + menu.classList.remove('sticky'); + stickyCache = false; + } + if (nextTop !== null) { + menu.style.top = nextTop + 'px'; + topCache = nextTop; + } + prevScrollTop = scrollTop; + }, { passive: true }); + })(); + (function controllBorder() { + function updateBorder() { + if (menu.offsetTop === 0) { + menu.classList.remove('bordered'); + } else { + menu.classList.add('bordered'); + } + } + updateBorder(); + document.addEventListener('scroll', updateBorder, { passive: true }); + })(); +})(); diff --git a/theme/css/chrome.css b/theme/css/chrome.css new file mode 100644 index 0000000..8b78255 --- /dev/null +++ b/theme/css/chrome.css @@ -0,0 +1,606 @@ +/* CSS for UI elements (a.k.a. chrome) */ + +@import 'variables.css'; + +html { + scrollbar-color: var(--scrollbar) var(--bg); +} +#searchresults a, +.content a:link, +a:visited, +a > .hljs { + color: var(--links); +} + +/* + body-container is necessary because mobile browsers don't seem to like + overflow-x on the body tag when there is a tag. +*/ +#body-container { + /* + This is used when the sidebar pushes the body content off the side of + the screen on small screens. Without it, dragging on mobile Safari + will want to reposition the viewport in a weird way. + */ + overflow-x: clip; +} + +/* Menu Bar */ + +#menu-bar, +#menu-bar-hover-placeholder { + z-index: 101; + margin: auto calc(0px - var(--page-padding)); +} +#menu-bar { + position: relative; + display: flex; + flex-wrap: wrap; + background-color: var(--bg); + border-block-end-color: var(--bg); + border-block-end-width: 1px; + border-block-end-style: solid; +} +#menu-bar.sticky, +.js #menu-bar-hover-placeholder:hover + #menu-bar, +.js #menu-bar:hover, +.js.sidebar-visible #menu-bar { + position: -webkit-sticky; + position: sticky; + top: 0 !important; +} +#menu-bar-hover-placeholder { + position: sticky; + position: -webkit-sticky; + top: 0; + height: var(--menu-bar-height); +} +#menu-bar.bordered { + border-block-end-color: var(--table-border-color); +} +#menu-bar i, #menu-bar .icon-button { + position: relative; + padding: 0 8px; + z-index: 10; + line-height: var(--menu-bar-height); + cursor: pointer; + transition: color 0.5s; +} +@media only screen and (max-width: 420px) { + #menu-bar i, #menu-bar .icon-button { + padding: 0 5px; + } +} + +.icon-button { + border: none; + background: none; + padding: 0; + color: inherit; +} +.icon-button i { + margin: 0; +} + +.right-buttons { + margin: 0 15px; +} +.right-buttons a { + text-decoration: none; +} + +.left-buttons { + display: flex; + margin: 0 5px; +} +.no-js .left-buttons button { + display: none; +} + +.menu-title { + display: inline-block; + font-weight: 200; + font-size: 2.4rem; + line-height: var(--menu-bar-height); + text-align: center; + margin: 0; + flex: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.js .menu-title { + cursor: pointer; +} + +.menu-bar, +.menu-bar:visited, +.nav-chapters, +.nav-chapters:visited, +.mobile-nav-chapters, +.mobile-nav-chapters:visited, +.menu-bar .icon-button, +.menu-bar a i { + color: var(--icons); +} + +.menu-bar i:hover, +.menu-bar .icon-button:hover, +.nav-chapters:hover, +.mobile-nav-chapters i:hover { + color: var(--icons-hover); +} + +/* Nav Icons */ + +.nav-chapters { + font-size: 2.5em; + text-align: center; + text-decoration: none; + + position: fixed; + top: 0; + bottom: 0; + margin: 0; + max-width: 150px; + min-width: 90px; + + display: flex; + justify-content: center; + align-content: center; + flex-direction: column; + + transition: color 0.5s, background-color 0.5s; +} + +.nav-chapters:hover { + text-decoration: none; + background-color: var(--theme-hover); + transition: background-color 0.15s, color 0.15s; +} + +.nav-wrapper { + margin-block-start: 50px; + display: none; +} + +.mobile-nav-chapters { + font-size: 2.5em; + text-align: center; + text-decoration: none; + width: 90px; + border-radius: 5px; + background-color: var(--sidebar-bg); +} + +/* Only Firefox supports flow-relative values */ +.previous { float: left; } +[dir=rtl] .previous { float: right; } + +/* Only Firefox supports flow-relative values */ +.next { + float: right; + right: var(--page-padding); +} +[dir=rtl] .next { + float: left; + right: unset; + left: var(--page-padding); +} + +/* Use the correct buttons for RTL layouts*/ +[dir=rtl] .previous i.fa-angle-left:before {content:"\f105";} +[dir=rtl] .next i.fa-angle-right:before { content:"\f104"; } + +@media only screen and (max-width: 1080px) { + .nav-wide-wrapper { display: none; } + .nav-wrapper { display: block; } +} + +/* sidebar-visible */ +@media only screen and (max-width: 1380px) { + #sidebar-toggle-anchor:checked ~ .page-wrapper .nav-wide-wrapper { display: none; } + #sidebar-toggle-anchor:checked ~ .page-wrapper .nav-wrapper { display: block; } +} + +/* Inline code */ + +:not(pre) > .hljs { + display: inline; + padding: 0.1em 0.3em; + border-radius: 3px; +} + +:not(pre):not(a) > .hljs { + color: var(--inline-code-color); + overflow-x: initial; +} + +a:hover > .hljs { + text-decoration: underline; +} + +pre { + position: relative; +} +pre > .buttons { + position: absolute; + z-index: 100; + right: 0px; + top: 2px; + margin: 0px; + padding: 2px 0px; + + color: var(--sidebar-fg); + cursor: pointer; + visibility: hidden; + opacity: 0; + transition: visibility 0.1s linear, opacity 0.1s linear; +} +pre:hover > .buttons { + visibility: visible; + opacity: 1 +} +pre > .buttons :hover { + color: var(--sidebar-active); + border-color: var(--icons-hover); + background-color: var(--theme-hover); +} +pre > .buttons i { + margin-inline-start: 8px; +} +pre > .buttons button { + cursor: inherit; + margin: 0px 5px; + padding: 3px 5px; + font-size: 14px; + + border-style: solid; + border-width: 1px; + border-radius: 4px; + border-color: var(--icons); + background-color: var(--theme-popup-bg); + transition: 100ms; + transition-property: color,border-color,background-color; + color: var(--icons); +} +@media (pointer: coarse) { + pre > .buttons button { + /* On mobile, make it easier to tap buttons. */ + padding: 0.3rem 1rem; + } + + .sidebar-resize-indicator { + /* Hide resize indicator on devices with limited accuracy */ + display: none; + } +} +pre > code { + display: block; + padding: 1rem; +} + +/* FIXME: ACE editors overlap their buttons because ACE does absolute + positioning within the code block which breaks padding. The only solution I + can think of is to move the padding to the outer pre tag (or insert a div + wrapper), but that would require fixing a whole bunch of CSS rules. +*/ +.hljs.ace_editor { + padding: 0rem 0rem; +} + +pre > .result { + margin-block-start: 10px; +} + +/* Search */ + +#searchresults a { + text-decoration: none; +} + +mark { + border-radius: 2px; + padding-block-start: 0; + padding-block-end: 1px; + padding-inline-start: 3px; + padding-inline-end: 3px; + margin-block-start: 0; + margin-block-end: -1px; + margin-inline-start: -3px; + margin-inline-end: -3px; + background-color: var(--search-mark-bg); + transition: background-color 300ms linear; + cursor: pointer; +} + +mark.fade-out { + background-color: rgba(0,0,0,0) !important; + cursor: auto; +} + +.searchbar-outer { + margin-inline-start: auto; + margin-inline-end: auto; + max-width: var(--content-max-width); +} + +#searchbar { + width: 100%; + margin-block-start: 5px; + margin-block-end: 0; + margin-inline-start: auto; + margin-inline-end: auto; + padding: 10px 16px; + transition: box-shadow 300ms ease-in-out; + border: 1px solid var(--searchbar-border-color); + border-radius: 3px; + background-color: var(--searchbar-bg); + color: var(--searchbar-fg); +} +#searchbar:focus, +#searchbar.active { + box-shadow: 0 0 3px var(--searchbar-shadow-color); +} + +.searchresults-header { + font-weight: bold; + font-size: 1em; + padding-block-start: 18px; + padding-block-end: 0; + padding-inline-start: 5px; + padding-inline-end: 0; + color: var(--searchresults-header-fg); +} + +.searchresults-outer { + margin-inline-start: auto; + margin-inline-end: auto; + max-width: var(--content-max-width); + border-block-end: 1px dashed var(--searchresults-border-color); +} + +ul#searchresults { + list-style: none; + padding-inline-start: 20px; +} +ul#searchresults li { + margin: 10px 0px; + padding: 2px; + border-radius: 2px; +} +ul#searchresults li.focus { + background-color: var(--searchresults-li-bg); +} +ul#searchresults span.teaser { + display: block; + clear: both; + margin-block-start: 5px; + margin-block-end: 0; + margin-inline-start: 20px; + margin-inline-end: 0; + font-size: 0.8em; +} +ul#searchresults span.teaser em { + font-weight: bold; + font-style: normal; +} + +/* Sidebar */ + +.sidebar { + position: fixed; + left: 0; + top: 0; + bottom: 0; + width: var(--sidebar-width); + font-size: 0.875em; + box-sizing: border-box; + -webkit-overflow-scrolling: touch; + overscroll-behavior-y: contain; + background-color: var(--sidebar-bg); + color: var(--sidebar-fg); +} +[dir=rtl] .sidebar { left: unset; right: 0; } +.sidebar-resizing { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.no-js .sidebar, +.js:not(.sidebar-resizing) .sidebar { + transition: transform 0.3s; /* Animation: slide away */ +} +.sidebar code { + line-height: 2em; +} +.sidebar .sidebar-scrollbox { + overflow-y: auto; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + padding: 10px 10px; +} +.sidebar .sidebar-resize-handle { + position: absolute; + cursor: col-resize; + width: 0; + right: calc(var(--sidebar-resize-indicator-width) * -1); + top: 0; + bottom: 0; + display: flex; + align-items: center; +} + +.sidebar-resize-handle .sidebar-resize-indicator { + width: 100%; + height: 12px; + background-color: var(--icons); + margin-inline-start: var(--sidebar-resize-indicator-space); +} + +[dir=rtl] .sidebar .sidebar-resize-handle { + left: calc(var(--sidebar-resize-indicator-width) * -1); + right: unset; +} +.js .sidebar .sidebar-resize-handle { + cursor: col-resize; + width: calc(var(--sidebar-resize-indicator-width) - var(--sidebar-resize-indicator-space)); +} +/* sidebar-hidden */ +#sidebar-toggle-anchor:not(:checked) ~ .sidebar { + transform: translateX(calc(0px - var(--sidebar-width) - var(--sidebar-resize-indicator-width))); + z-index: -1; +} +[dir=rtl] #sidebar-toggle-anchor:not(:checked) ~ .sidebar { + transform: translateX(calc(var(--sidebar-width) + var(--sidebar-resize-indicator-width))); +} +.sidebar::-webkit-scrollbar { + background: var(--sidebar-bg); +} +.sidebar::-webkit-scrollbar-thumb { + background: var(--scrollbar); +} + +/* sidebar-visible */ +#sidebar-toggle-anchor:checked ~ .page-wrapper { + transform: translateX(calc(var(--sidebar-width) + var(--sidebar-resize-indicator-width))); +} +[dir=rtl] #sidebar-toggle-anchor:checked ~ .page-wrapper { + transform: translateX(calc(0px - var(--sidebar-width) - var(--sidebar-resize-indicator-width))); +} +@media only screen and (min-width: 620px) { + #sidebar-toggle-anchor:checked ~ .page-wrapper { + transform: none; + margin-inline-start: calc(var(--sidebar-width) + var(--sidebar-resize-indicator-width)); + } + [dir=rtl] #sidebar-toggle-anchor:checked ~ .page-wrapper { + transform: none; + } +} + +.chapter { + list-style: none outside none; + padding-inline-start: 0; + line-height: 2.2em; +} + +.chapter ol { + width: 100%; +} + +.chapter li { + display: flex; + color: var(--sidebar-non-existant); +} +.chapter li a { + display: block; + padding: 0; + text-decoration: none; + color: var(--sidebar-fg); +} + +.chapter li a:hover { + color: var(--sidebar-active); +} + +.chapter li a.active { + color: var(--sidebar-active); +} + +.chapter li > a.toggle { + cursor: pointer; + display: block; + margin-inline-start: auto; + padding: 0 10px; + user-select: none; + opacity: 0.68; +} + +.chapter li > a.toggle div { + transition: transform 0.5s; +} + +/* collapse the section */ +.chapter li:not(.expanded) + li > ol { + display: none; +} + +.chapter li.chapter-item { + line-height: 1.5em; + margin-block-start: 0.6em; +} + +.chapter li.expanded > a.toggle div { + transform: rotate(90deg); +} + +.spacer { + width: 100%; + height: 3px; + margin: 5px 0px; +} +.chapter .spacer { + background-color: var(--sidebar-spacer); +} + +@media (-moz-touch-enabled: 1), (pointer: coarse) { + .chapter li a { padding: 5px 0; } + .spacer { margin: 10px 0; } +} + +.section { + list-style: none outside none; + padding-inline-start: 20px; + line-height: 1.9em; +} + +/* Theme Menu Popup */ + +.theme-popup { + position: absolute; + left: 10px; + top: var(--menu-bar-height); + z-index: 1000; + border-radius: 4px; + font-size: 0.7em; + color: var(--fg); + background: var(--theme-popup-bg); + border: 1px solid var(--theme-popup-border); + margin: 0; + padding: 0; + list-style: none; + display: none; + /* Don't let the children's background extend past the rounded corners. */ + overflow: hidden; +} +[dir=rtl] .theme-popup { left: unset; right: 10px; } +.theme-popup .default { + color: var(--icons); +} +.theme-popup .theme { + width: 100%; + border: 0; + margin: 0; + padding: 2px 20px; + line-height: 25px; + white-space: nowrap; + text-align: start; + cursor: pointer; + color: inherit; + background: inherit; + font-size: inherit; +} +.theme-popup .theme:hover { + background-color: var(--theme-hover); +} + +.theme-selected::before { + display: inline-block; + content: "✓"; + margin-inline-start: -14px; + width: 14px; +} diff --git a/theme/css/general.css b/theme/css/general.css new file mode 100644 index 0000000..e7d20da --- /dev/null +++ b/theme/css/general.css @@ -0,0 +1,234 @@ +/* Base styles and content styles */ + +@import 'variables.css'; + +:root { + /* Browser default font-size is 16px, this way 1 rem = 10px */ + font-size: 62.5%; + color-scheme: var(--color-scheme); +} + +html { + font-family: "Open Sans", sans-serif; + color: var(--fg); + background-color: var(--bg); + text-size-adjust: none; + -webkit-text-size-adjust: none; +} + +body { + margin: 0; + font-size: 1.6rem; + overflow-x: hidden; +} + +code { + font-family: var(--mono-font) !important; + font-size: var(--code-font-size); + direction: ltr !important; +} + +/* make long words/inline code not x overflow */ +main { + overflow-wrap: break-word; +} + +/* make wide tables scroll if they overflow */ +.table-wrapper { + overflow-x: auto; +} + +/* Don't change font size in headers. */ +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + font-size: unset; +} + +.left { float: left; } +.right { float: right; } +.boring { opacity: 0.6; } +.hide-boring .boring { display: none; } +.hidden { display: none !important; } + +h2, h3 { margin-block-start: 2.5em; } +h4, h5 { margin-block-start: 2em; } + +.header + .header h3, +.header + .header h4, +.header + .header h5 { + margin-block-start: 1em; +} + +h1:target::before, +h2:target::before, +h3:target::before, +h4:target::before, +h5:target::before, +h6:target::before { + display: inline-block; + content: "»"; + margin-inline-start: -30px; + width: 30px; +} + +/* This is broken on Safari as of version 14, but is fixed + in Safari Technology Preview 117 which I think will be Safari 14.2. + https://bugs.webkit.org/show_bug.cgi?id=218076 +*/ +:target { + /* Safari does not support logical properties */ + scroll-margin-top: calc(var(--menu-bar-height) + 0.5em); +} + +.page { + outline: 0; + padding: 0 var(--page-padding); + margin-block-start: calc(0px - var(--menu-bar-height)); /* Compensate for the #menu-bar-hover-placeholder */ +} +.page-wrapper { + box-sizing: border-box; + background-color: var(--bg); +} +.no-js .page-wrapper, +.js:not(.sidebar-resizing) .page-wrapper { + transition: margin-left 0.3s ease, transform 0.3s ease; /* Animation: slide away */ +} +[dir=rtl] .js:not(.sidebar-resizing) .page-wrapper { + transition: margin-right 0.3s ease, transform 0.3s ease; /* Animation: slide away */ +} + +.content { + overflow-y: auto; + padding: 0 5px 50px 5px; +} +.content main { + margin-inline-start: auto; + margin-inline-end: auto; + max-width: var(--content-max-width); +} +.content p { line-height: 1.45em; } +.content ol { line-height: 1.45em; } +.content ul { line-height: 1.45em; } +.content a { text-decoration: none; } +.content a:hover { text-decoration: underline; } +.content img, .content video { max-width: 100%; } +.content .header:link, +.content .header:visited { + color: var(--fg); +} +.content .header:link, +.content .header:visited:hover { + text-decoration: none; +} + +table { + margin: 0 auto; + border-collapse: collapse; +} +table td { + padding: 3px 20px; + border: 1px var(--table-border-color) solid; +} +table thead { + background: var(--table-header-bg); +} +table thead td { + font-weight: 700; + border: none; +} +table thead th { + padding: 3px 20px; +} +table thead tr { + border: 1px var(--table-header-bg) solid; +} +/* Alternate background colors for rows */ +table tbody tr:nth-child(2n) { + background: var(--table-alternate-bg); +} + + +blockquote { + margin: 20px 0; + padding: 0 20px; + color: var(--fg); + background-color: var(--quote-bg); + border-block-start: .1em solid var(--quote-border); + border-block-end: .1em solid var(--quote-border); +} + +.warning { + margin: 20px; + padding: 0 20px; + border-inline-start: 2px solid var(--warning-border); +} + +.warning:before { + position: absolute; + width: 3rem; + height: 3rem; + margin-inline-start: calc(-1.5rem - 21px); + content: "ⓘ"; + text-align: center; + background-color: var(--bg); + color: var(--warning-border); + font-weight: bold; + font-size: 2rem; +} + +blockquote .warning:before { + background-color: var(--quote-bg); +} + +kbd { + background-color: var(--table-border-color); + border-radius: 4px; + border: solid 1px var(--theme-popup-border); + box-shadow: inset 0 -1px 0 var(--theme-hover); + display: inline-block; + font-size: var(--code-font-size); + font-family: var(--mono-font); + line-height: 10px; + padding: 4px 5px; + vertical-align: middle; +} + +:not(.footnote-definition) + .footnote-definition, +.footnote-definition + :not(.footnote-definition) { + margin-block-start: 2em; +} +.footnote-definition { + font-size: 0.9em; + margin: 0.5em 0; +} +.footnote-definition p { + display: inline; +} + +.tooltiptext { + position: absolute; + visibility: hidden; + color: #fff; + background-color: #333; + transform: translateX(-50%); /* Center by moving tooltip 50% of its width left */ + left: -8px; /* Half of the width of the icon */ + top: -35px; + font-size: 0.8em; + text-align: center; + border-radius: 6px; + padding: 5px 8px; + margin: 5px; + z-index: 1000; +} +.tooltipped .tooltiptext { + visibility: visible; +} + +.chapter li.part-title { + color: var(--sidebar-fg); + margin: 5px 0px; + font-weight: bold; +} + +.result-no-output { + font-style: italic; +} diff --git a/theme/css/print.css b/theme/css/print.css new file mode 100644 index 0000000..80ec3a5 --- /dev/null +++ b/theme/css/print.css @@ -0,0 +1,50 @@ + +#sidebar, +#menu-bar, +.nav-chapters, +.mobile-nav-chapters { + display: none; +} + +#page-wrapper.page-wrapper { + transform: none !important; + margin-inline-start: 0px; + overflow-y: initial; +} + +#content { + max-width: none; + margin: 0; + padding: 0; +} + +.page { + overflow-y: initial; +} + +code { + direction: ltr !important; +} + +pre > .buttons { + z-index: 2; +} + +a, a:visited, a:active, a:hover { + color: #4183c4; + text-decoration: none; +} + +h1, h2, h3, h4, h5, h6 { + page-break-inside: avoid; + page-break-after: avoid; +} + +pre, code { + page-break-inside: avoid; + white-space: pre-wrap; +} + +.fa { + display: none !important; +} diff --git a/theme/css/variables.css b/theme/css/variables.css new file mode 100644 index 0000000..0da55e8 --- /dev/null +++ b/theme/css/variables.css @@ -0,0 +1,279 @@ + +/* Globals */ + +:root { + --sidebar-width: 300px; + --sidebar-resize-indicator-width: 8px; + --sidebar-resize-indicator-space: 2px; + --page-padding: 15px; + --content-max-width: 750px; + --menu-bar-height: 50px; + --mono-font: "Source Code Pro", Consolas, "Ubuntu Mono", Menlo, "DejaVu Sans Mono", monospace, monospace; + --code-font-size: 0.875em /* please adjust the ace font size accordingly in editor.js */ +} + +/* Themes */ + +.ayu { + --bg: hsl(210, 25%, 8%); + --fg: #c5c5c5; + + --sidebar-bg: #14191f; + --sidebar-fg: #c8c9db; + --sidebar-non-existant: #5c6773; + --sidebar-active: #ffb454; + --sidebar-spacer: #2d334f; + + --scrollbar: var(--sidebar-fg); + + --icons: #737480; + --icons-hover: #b7b9cc; + + --links: #0096cf; + + --inline-code-color: #ffb454; + + --theme-popup-bg: #14191f; + --theme-popup-border: #5c6773; + --theme-hover: #191f26; + + --quote-bg: hsl(226, 15%, 17%); + --quote-border: hsl(226, 15%, 22%); + + --warning-border: #ff8e00; + + --table-border-color: hsl(210, 25%, 13%); + --table-header-bg: hsl(210, 25%, 28%); + --table-alternate-bg: hsl(210, 25%, 11%); + + --searchbar-border-color: #848484; + --searchbar-bg: #424242; + --searchbar-fg: #fff; + --searchbar-shadow-color: #d4c89f; + --searchresults-header-fg: #666; + --searchresults-border-color: #888; + --searchresults-li-bg: #252932; + --search-mark-bg: #e3b171; + + --color-scheme: dark; +} + +.coal { + --bg: hsl(200, 7%, 8%); + --fg: #98a3ad; + + --sidebar-bg: #292c2f; + --sidebar-fg: #a1adb8; + --sidebar-non-existant: #505254; + --sidebar-active: #3473ad; + --sidebar-spacer: #393939; + + --scrollbar: var(--sidebar-fg); + + --icons: #43484d; + --icons-hover: #b3c0cc; + + --links: #2b79a2; + + --inline-code-color: #c5c8c6; + + --theme-popup-bg: #141617; + --theme-popup-border: #43484d; + --theme-hover: #1f2124; + + --quote-bg: hsl(234, 21%, 18%); + --quote-border: hsl(234, 21%, 23%); + + --warning-border: #ff8e00; + + --table-border-color: hsl(200, 7%, 13%); + --table-header-bg: hsl(200, 7%, 28%); + --table-alternate-bg: hsl(200, 7%, 11%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #b7b7b7; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #666; + --searchresults-border-color: #98a3ad; + --searchresults-li-bg: #2b2b2f; + --search-mark-bg: #355c7d; + + --color-scheme: dark; +} + +.light { + --bg: hsl(0, 0%, 100%); + --fg: hsl(0, 0%, 0%); + + --sidebar-bg: #fafafa; + --sidebar-fg: hsl(0, 0%, 0%); + --sidebar-non-existant: #aaaaaa; + --sidebar-active: #1f1fff; + --sidebar-spacer: #f4f4f4; + + --scrollbar: #8F8F8F; + + --icons: #747474; + --icons-hover: #000000; + + --links: #20609f; + + --inline-code-color: #301900; + + --theme-popup-bg: #fafafa; + --theme-popup-border: #cccccc; + --theme-hover: #e6e6e6; + + --quote-bg: hsl(197, 37%, 96%); + --quote-border: hsl(197, 37%, 91%); + + --warning-border: #ff8e00; + + --table-border-color: hsl(0, 0%, 95%); + --table-header-bg: hsl(0, 0%, 80%); + --table-alternate-bg: hsl(0, 0%, 97%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #fafafa; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #666; + --searchresults-border-color: #888; + --searchresults-li-bg: #e4f2fe; + --search-mark-bg: #a2cff5; + + --color-scheme: light; +} + +.navy { + --bg: hsl(226, 23%, 11%); + --fg: #bcbdd0; + + --sidebar-bg: #282d3f; + --sidebar-fg: #c8c9db; + --sidebar-non-existant: #505274; + --sidebar-active: #2b79a2; + --sidebar-spacer: #2d334f; + + --scrollbar: var(--sidebar-fg); + + --icons: #737480; + --icons-hover: #b7b9cc; + + --links: #2b79a2; + + --inline-code-color: #c5c8c6; + + --theme-popup-bg: #161923; + --theme-popup-border: #737480; + --theme-hover: #282e40; + + --quote-bg: hsl(226, 15%, 17%); + --quote-border: hsl(226, 15%, 22%); + + --warning-border: #ff8e00; + + --table-border-color: hsl(226, 23%, 16%); + --table-header-bg: hsl(226, 23%, 31%); + --table-alternate-bg: hsl(226, 23%, 14%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #aeaec6; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #5f5f71; + --searchresults-border-color: #5c5c68; + --searchresults-li-bg: #242430; + --search-mark-bg: #a2cff5; + + --color-scheme: dark; +} + +.rust { + --bg: hsl(60, 9%, 87%); + --fg: #262625; + + --sidebar-bg: #3b2e2a; + --sidebar-fg: #c8c9db; + --sidebar-non-existant: #505254; + --sidebar-active: #e69f67; + --sidebar-spacer: #45373a; + + --scrollbar: var(--sidebar-fg); + + --icons: #737480; + --icons-hover: #262625; + + --links: #2b79a2; + + --inline-code-color: #6e6b5e; + + --theme-popup-bg: #e1e1db; + --theme-popup-border: #b38f6b; + --theme-hover: #99908a; + + --quote-bg: hsl(60, 5%, 75%); + --quote-border: hsl(60, 5%, 70%); + + --warning-border: #ff8e00; + + --table-border-color: hsl(60, 9%, 82%); + --table-header-bg: #b3a497; + --table-alternate-bg: hsl(60, 9%, 84%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #fafafa; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #666; + --searchresults-border-color: #888; + --searchresults-li-bg: #dec2a2; + --search-mark-bg: #e69f67; + + --color-scheme: light; +} + +@media (prefers-color-scheme: dark) { + .light.no-js { + --bg: hsl(200, 7%, 8%); + --fg: #98a3ad; + + --sidebar-bg: #292c2f; + --sidebar-fg: #a1adb8; + --sidebar-non-existant: #505254; + --sidebar-active: #3473ad; + --sidebar-spacer: #393939; + + --scrollbar: var(--sidebar-fg); + + --icons: #43484d; + --icons-hover: #b3c0cc; + + --links: #2b79a2; + + --inline-code-color: #c5c8c6; + + --theme-popup-bg: #141617; + --theme-popup-border: #43484d; + --theme-hover: #1f2124; + + --quote-bg: hsl(234, 21%, 18%); + --quote-border: hsl(234, 21%, 23%); + + --warning-border: #ff8e00; + + --table-border-color: hsl(200, 7%, 13%); + --table-header-bg: hsl(200, 7%, 28%); + --table-alternate-bg: hsl(200, 7%, 11%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #b7b7b7; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #666; + --searchresults-border-color: #98a3ad; + --searchresults-li-bg: #2b2b2f; + --search-mark-bg: #355c7d; + } +} diff --git a/theme/favicon.png b/theme/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b1aa16c4dcb6c872cb5af799bfc9b5552c7b9e GIT binary patch literal 5679 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 A;{X5v literal 0 HcmV?d00001 diff --git a/theme/favicon.svg b/theme/favicon.svg new file mode 100644 index 0000000..90e0ea5 --- /dev/null +++ b/theme/favicon.svg @@ -0,0 +1,22 @@ + + + + + diff --git a/theme/fonts/OPEN-SANS-LICENSE.txt b/theme/fonts/OPEN-SANS-LICENSE.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/theme/fonts/OPEN-SANS-LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/theme/fonts/SOURCE-CODE-PRO-LICENSE.txt b/theme/fonts/SOURCE-CODE-PRO-LICENSE.txt new file mode 100644 index 0000000..366206f --- /dev/null +++ b/theme/fonts/SOURCE-CODE-PRO-LICENSE.txt @@ -0,0 +1,93 @@ +Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/theme/fonts/fonts.css b/theme/fonts/fonts.css new file mode 100644 index 0000000..858efa5 --- /dev/null +++ b/theme/fonts/fonts.css @@ -0,0 +1,100 @@ +/* Open Sans is licensed under the Apache License, Version 2.0. See http://www.apache.org/licenses/LICENSE-2.0 */ +/* Source Code Pro is under the Open Font License. See https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL */ + +/* open-sans-300 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), + url('open-sans-v17-all-charsets-300.woff2') format('woff2'); +} + +/* open-sans-300italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: local('Open Sans Light Italic'), local('OpenSans-LightItalic'), + url('open-sans-v17-all-charsets-300italic.woff2') format('woff2'); +} + +/* open-sans-regular - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans Regular'), local('OpenSans-Regular'), + url('open-sans-v17-all-charsets-regular.woff2') format('woff2'); +} + +/* open-sans-italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), + url('open-sans-v17-all-charsets-italic.woff2') format('woff2'); +} + +/* open-sans-600 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), + url('open-sans-v17-all-charsets-600.woff2') format('woff2'); +} + +/* open-sans-600italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans SemiBold Italic'), local('OpenSans-SemiBoldItalic'), + url('open-sans-v17-all-charsets-600italic.woff2') format('woff2'); +} + +/* open-sans-700 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), + url('open-sans-v17-all-charsets-700.woff2') format('woff2'); +} + +/* open-sans-700italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), + url('open-sans-v17-all-charsets-700italic.woff2') format('woff2'); +} + +/* open-sans-800 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 800; + src: local('Open Sans ExtraBold'), local('OpenSans-ExtraBold'), + url('open-sans-v17-all-charsets-800.woff2') format('woff2'); +} + +/* open-sans-800italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 800; + src: local('Open Sans ExtraBold Italic'), local('OpenSans-ExtraBoldItalic'), + url('open-sans-v17-all-charsets-800italic.woff2') format('woff2'); +} + +/* source-code-pro-500 - latin_vietnamese_latin-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Source Code Pro'; + font-style: normal; + font-weight: 500; + src: url('source-code-pro-v11-all-charsets-500.woff2') format('woff2'); +} diff --git a/theme/fonts/open-sans-v17-all-charsets-300.woff2 b/theme/fonts/open-sans-v17-all-charsets-300.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9f51be370fa913ce6de2922b580c262c4822b337 GIT binary patch literal 44352 zcmV(;K-<4}Pew8T0RR910Ifg(5dZ)H0f7hr0Ib{q0RR9100000000000000000000 z0000QE*lUWfmQ}!0EY+&fhq})G!YOAg!yQMtSAeP3IG8%0we>R0t6rhgFFYi4Ge-h zTM$x_K;*{m=TyO<(oF`$dr#+gT@uRz<@OP72f1way{Ld4djxa`IG0*=K;{4c|Nq>i zF~-^s+Z{rPn$}0zLzV=G*ddk#MfRZCOSo7Svxg)@O1QTM(GtC{-8am>TkfXJ&}5JO zXokZnNWAaG&x#r1r&DFc3k@sfl$|@RDaX?kWW{EN@TZnHp}gCDd}u9PW@H>gZ142z+QEhtr+J1&#|>KAj6Y2`)3tZkBe+ebjmTS6=W*;+$iHPBB3Un)Qo?6q*dE(P3T9y565vHowfyevYxI9K2P(y z$<_L{@8?J5hBF;TxvX%vUMY{MW;AQOFw;MRE?UNs>(i)Pw#F30SO&%}gA&nV#5ynh z%lr4w|41^EwI78NR7X_&MdMPeXq|gj4oJ6}tzd{4Fvwwq1Zjy_sfS1l0YYgJLOuSa zG~qZt#{MG5VL1;uY?c0qywYwhjn*_`$CiZFZCFDFz-?kG;zz}gkK?(Z;(4Ip0|Y@p zL`0q-DhfWlFW)O~_Uv1l(z*7n%=kiif-51?{(S1>dTz;-%RXz{zW_NG4POWVdSfQ{H?gb&VPWmSuI@as@lXQ zCML+EVq_sv+K31qR)E!rHdbOZcI*#x`rpX1-FQZd2?w2J5+HD^d^xN_9WLUu;R1_>$Sl2l1j{i_PqRoxBKXmEfAv5RRCG~gHz zoRPqp)jl)`>4DtY_ee=+oD0vBlrtv1+}R|)Aj>WYFNl--dsEGJL13vB!x?g=A&fDlOONKn#&pyZ<<^Gt#Y5O9+B{||V8CFK!GIY^G7 ziird-fZ=XPfYkAzOvx!^1&5rvR8_9Zlqy%TZCti4x_G(NsHD}UoUD}Q&&1ywU=hnR zK_eK;d!w1V-89?ZEBgl|7bFMOFTBI&;bU#pwZ9KM5d*ckoOlTrnn@#e=0bxf_LKF$ zd-0Mi4MXYT*CGx?Tq%ZXXdY`yIWWVJf|?K(5DNrL%GP_mZs@nw-vBb}Rw0W;wB!)N z5TjzUSNZXIA7943^nXK*r#Dw9|Mtf&ksu-=h_`Yp9V;Dkh;8<4psUZVb-$?#qp%T! ziAdB1b$5t5hjOzR8iD$*)2$e71R6>Zt8%DEY$Sg2KWN&b4Cqr8h>8`6#((@8#L}XktLaTS zryU~vMx03nNxOB%uQY)H>VL7pz)zP2nhY%8WH@)-0RsdY-07d0c5ee-ah{%=QSM%u z*8so2)#K3GU!m!|?O$6+?&yD~(Fj>ZOxK05BApxGi zJr7YET6WG{j1#TYt(MkW%SPIA4dOUU&zsN+<{}nS6r*LQrr)v8tl?2R`* z6w<>(odO>Dg>%+<`=H~%Re+D2bI267Gb@WPo}vT*tKEȮck{9tEK*~BMoW% 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 literal 0 HcmV?d00001 diff --git a/theme/fonts/open-sans-v17-all-charsets-300italic.woff2 b/theme/fonts/open-sans-v17-all-charsets-300italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2f545448418cba6668a2e7d49e9616e8c69dfd15 GIT binary patch literal 40656 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 bQBM5)6s%p?oy_T)fR3IrepgG2|qH4K6n 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

D& zKmG7e67!kl#@t`?2092GluuaI?(wqHGc$CxbhOu&-QklBs;yusvX`9XbS$sFoH+FwvSs*$VNBEt-3}x$RNG$?<{E4Ybo(b3OQlfghskNz z9}K5Z3VQ3758HkG0jW@{RIXI$g7RShkH;@~Tu&=BS_r#d@9~%{hig#_2T@|P9H)w? z=gh}5S>q^Cq)p*cpk@GaSXq4sH<14^6;np5c+t|$J9x&lS&Se9UXJl& z`)tC!CGF^PM{9Gle70PoNpUr~Y%X6Z!}+OG>@qySno#@WZs|(!*Vl)pnmp&Xm-VKQ zd#My=>7WO!yH+kA!}m@QP$?RL){Bk$Qv*y2cO;BUYachhU4q|dA!Mv|yd}&v+!gE% z{DqB_ousX_y~Gbfu*tQR**BQz*PQqTVG6mV8#<{f+pRkMaZ3L)vy(`szQ9`Qf3L->DdXY}1dMc^^Csk2NTKs7&QcmZsc@0=Q*+*}0+ubaVYp z?_|MQ3hbnc(VG!jcF*kMaE)V8EC4oZFthXNL(^I^9lZlOJ$lJAO5=PrN|Oa{fGt+^ z86n<5N4dk4So5{kLjS&dhC18h8m3KH)**}vqTFD5^iMTKEbcl&5* zW^QC_D;06l5fzsu|eN0BcF>w|9d0O=b_CFVJ+E}_9y>Lu<@sRBZRB_KQXt_6*y+3*^M zE`8Gx-~2b)<#e>sMPht9=HdY`yV6x{- z64g$bGMR7NOT#uSC|2C5PQzyT^d!Zjg}qSQ?g6h$P4ccGk1(o5QhVy0CTs#8Vc)~9 zOq7?zT_f$!BRru4nCKiVUdJbNGaH|)2T8r+vx5vQZAuho$o6xH5)jXZGCov~fcRfT z&bKQLJ3z=#;>0N62R2Ai419Sb^WkaElLsFHLI;>$2KQ0{9@j2ZT<&_5+_Qnn+unjA znR%4OQ<~yW{LJ??8#ND;4y+f5FkhH;oGaMu*V%`Yil((-`_{i*wzrFu0@>r@;Q!@9 ztG-5C$|o66q0!cO8N3oR-ZuJgm%HhR9u|9gr72nkgf z`o9%BG~SIbmXx=T6}XWG!96o?82ddt~la{g9g5aRjJlk4d!jyanU_J7pF% z77h|AA4MVw=oD5BKVh$ZqKjco|ES*^`7lni8w`M~OOWG;!0pS{gxy|=mLhl`j&hO$ zyh#a7>{8aWnp$JtTk9*E)-=y}7@o8Aa4GKMcm(?Dkj`*yw&d^BbmmXdiwG6W=0S!H zhPH0Do+Bm19r|tQO1}!sqQwXgXJt)nTYP{voU&oA`&wBCy5wXMu+q{aM~Pnu^`Xm% z>~wKZWVqL`FH-T@4e}yAN80yR(3BfT^Ox^K6v1kT9mt8Me)EpvvO~*=Dzl0TbRG>Y z021OhH){SbYUb?JJhVvyjO_=O!9SzJSr7p`)%p3ee#i#M@JWL}?M@`DqCi*ZE@Tjp F{|Bsk2y6fV literal 0 HcmV?d00001 diff --git a/theme/fonts/open-sans-v17-all-charsets-600italic.woff2 b/theme/fonts/open-sans-v17-all-charsets-600italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c99aabe80340fd88a6aeb5729251e76c9a6f35ec GIT binary patch literal 42120 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 E9}-z&tN;K2 literal 0 HcmV?d00001 diff --git a/theme/fonts/open-sans-v17-all-charsets-700.woff2 b/theme/fonts/open-sans-v17-all-charsets-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..421a1ab25fa88105ab776552d7201205f7899841 GIT binary patch literal 44988 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 literal 0 HcmV?d00001 diff --git a/theme/fonts/open-sans-v17-all-charsets-700italic.woff2 b/theme/fonts/open-sans-v17-all-charsets-700italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..12ce3d20d1ce2288206e8b4f31c20f76452efe37 GIT binary patch literal 40800 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%0DER>;wf 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%0Deo9y(?}8?riQx3p&>dOY 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

33OR1_N*!%ylDDa|3D1;gP8brBkv%FrMeyX$5% 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�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 literal 0 HcmV?d00001 diff --git a/theme/fonts/open-sans-v17-all-charsets-italic.woff2 b/theme/fonts/open-sans-v17-all-charsets-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..398b68a0853fbf6368758deb1da49d347e3e7d89 GIT binary patch literal 41076 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

  • ~`;p}3;==ZtNy# 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 literal 0 HcmV?d00001 diff --git a/theme/fonts/open-sans-v17-all-charsets-regular.woff2 b/theme/fonts/open-sans-v17-all-charsets-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8383e94c65478622baf43553262e0e31b8725e2b GIT binary patch literal 43236 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⪚aqC6F-jh=?`}zBG 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/g,">").replace(/"/g,""").replace(/'/g,"'")}function r(e,...n){var t={};for(const n in e)t[n]=e[n];return n.forEach((function(e){for(const n in e)t[n]=e[n]})),t}function a(e){return e.nodeName.toLowerCase()}var i=Object.freeze({__proto__:null,escapeHTML:t,inherit:r,nodeStream:function(e){var n=[];return function e(t,r){for(var i=t.firstChild;i;i=i.nextSibling)3===i.nodeType?r+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:r,node:i}),r=e(i,r),a(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:r,node:i}));return r}(e,0),n},mergeStreams:function(e,n,r){var i=0,s="",o=[];function l(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function u(e){s+=""}function d(e){("start"===e.event?c:u)(e.node)}for(;e.length||n.length;){var g=l();if(s+=t(r.substring(i,g[0].offset)),i=g[0].offset,g===e){o.reverse().forEach(u);do{d(g.splice(0,1)[0]),g=l()}while(g===e&&g.length&&g[0].offset===i);o.reverse().forEach(c)}else"start"===g[0].event?o.push(g[0].node):o.pop(),d(g.splice(0,1)[0])}return s+t(r.substr(i))}});const s="",o=e=>!!e.kind;class l{constructor(e,n){this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){this.buffer+=t(e)}openNode(e){if(!o(e))return;let n=e.kind;e.sublanguage||(n=`${this.classPrefix}${n}`),this.span(n)}closeNode(e){o(e)&&(this.buffer+=s)}value(){return this.buffer}span(e){this.buffer+=``}}class c{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const n={kind:e,children:[]};this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,n){return"string"==typeof n?e.addText(n):n.children&&(e.openNode(n),n.children.forEach(n=>this._walk(e,n)),e.closeNode(n)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(e=>"string"==typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{c._collapse(e)}))}}class u extends c{constructor(e){super(),this.options=e}addKeyword(e,n){""!==e&&(this.openNode(n),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,n){const t=e.root;t.kind=n,t.sublanguage=!0,this.add(t)}toHTML(){return new l(this,this.options).value()}finalize(){return!0}}function d(e){return e?"string"==typeof e?e:e.source:null}const g="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",h={begin:"\\\\[\\s\\S]",relevance:0},f={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[h]},p={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[h]},b={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},m=function(e,n,t={}){var a=r({className:"comment",begin:e,end:n,contains:[]},t);return a.contains.push(b),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),a},v=m("//","$"),x=m("/\\*","\\*/"),E=m("#","$");var _=Object.freeze({__proto__:null,IDENT_RE:"[a-zA-Z]\\w*",UNDERSCORE_IDENT_RE:"[a-zA-Z_]\\w*",NUMBER_RE:"\\b\\d+(\\.\\d+)?",C_NUMBER_RE:g,BINARY_NUMBER_RE:"\\b(0b[01]+)",RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const n=/^#![ ]*\//;return e.binary&&(e.begin=function(...e){return e.map(e=>d(e)).join("")}(n,/.*\b/,e.binary,/\b.*/)),r({className:"meta",begin:n,end:/$/,relevance:0,"on:begin":(e,n)=>{0!==e.index&&n.ignoreMatch()}},e)},BACKSLASH_ESCAPE:h,APOS_STRING_MODE:f,QUOTE_STRING_MODE:p,PHRASAL_WORDS_MODE:b,COMMENT:m,C_LINE_COMMENT_MODE:v,C_BLOCK_COMMENT_MODE:x,HASH_COMMENT_MODE:E,NUMBER_MODE:{className:"number",begin:"\\b\\d+(\\.\\d+)?",relevance:0},C_NUMBER_MODE:{className:"number",begin:g,relevance:0},BINARY_NUMBER_MODE:{className:"number",begin:"\\b(0b[01]+)",relevance:0},CSS_NUMBER_MODE:{className:"number",begin:"\\b\\d+(\\.\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[h,{begin:/\[/,end:/\]/,relevance:0,contains:[h]}]}]},TITLE_MODE:{className:"title",begin:"[a-zA-Z]\\w*",relevance:0},UNDERSCORE_TITLE_MODE:{className:"title",begin:"[a-zA-Z_]\\w*",relevance:0},METHOD_GUARD:{begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{n.data._beginMatch!==e[1]&&n.ignoreMatch()}})}}),N="of and for in not or if then".split(" ");function w(e,n){return n?+n:function(e){return N.includes(e.toLowerCase())}(e)?0:1}const R=t,y=r,{nodeStream:k,mergeStreams:O}=i,M=Symbol("nomatch");return function(t){var a=[],i={},s={},o=[],l=!0,c=/(^(<[^>]+>|\t|)+|\n)/gm,g="Could not find the language '{}', did you forget to load/include a language module?";const h={disableAutodetect:!0,name:"Plain text",contains:[]};var f={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:u};function p(e){return f.noHighlightRe.test(e)}function b(e,n,t,r){var a={code:n,language:e};S("before:highlight",a);var i=a.result?a.result:m(a.language,a.code,t,r);return i.code=a.code,S("after:highlight",i),i}function m(e,t,a,s){var o=t;function c(e,n){var t=E.case_insensitive?n[0].toLowerCase():n[0];return Object.prototype.hasOwnProperty.call(e.keywords,t)&&e.keywords[t]}function u(){null!=y.subLanguage?function(){if(""!==A){var e=null;if("string"==typeof y.subLanguage){if(!i[y.subLanguage])return void O.addText(A);e=m(y.subLanguage,A,!0,k[y.subLanguage]),k[y.subLanguage]=e.top}else e=v(A,y.subLanguage.length?y.subLanguage:null);y.relevance>0&&(I+=e.relevance),O.addSublanguage(e.emitter,e.language)}}():function(){if(!y.keywords)return void O.addText(A);let e=0;y.keywordPatternRe.lastIndex=0;let n=y.keywordPatternRe.exec(A),t="";for(;n;){t+=A.substring(e,n.index);const r=c(y,n);if(r){const[e,a]=r;O.addText(t),t="",I+=a,O.addKeyword(n[0],e)}else t+=n[0];e=y.keywordPatternRe.lastIndex,n=y.keywordPatternRe.exec(A)}t+=A.substr(e),O.addText(t)}(),A=""}function h(e){return e.className&&O.openNode(e.className),y=Object.create(e,{parent:{value:y}})}function p(e){return 0===y.matcher.regexIndex?(A+=e[0],1):(L=!0,0)}var b={};function x(t,r){var i=r&&r[0];if(A+=t,null==i)return u(),0;if("begin"===b.type&&"end"===r.type&&b.index===r.index&&""===i){if(A+=o.slice(r.index,r.index+1),!l){const n=Error("0 width match regex");throw n.languageName=e,n.badRule=b.rule,n}return 1}if(b=r,"begin"===r.type)return function(e){var t=e[0],r=e.rule;const a=new n(r),i=[r.__beforeBegin,r["on:begin"]];for(const n of i)if(n&&(n(e,a),a.ignore))return p(t);return r&&r.endSameAsBegin&&(r.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),r.skip?A+=t:(r.excludeBegin&&(A+=t),u(),r.returnBegin||r.excludeBegin||(A=t)),h(r),r.returnBegin?0:t.length}(r);if("illegal"===r.type&&!a){const e=Error('Illegal lexeme "'+i+'" for mode "'+(y.className||"")+'"');throw e.mode=y,e}if("end"===r.type){var s=function(e){var t=e[0],r=o.substr(e.index),a=function e(t,r,a){let i=function(e,n){var t=e&&e.exec(n);return t&&0===t.index}(t.endRe,a);if(i){if(t["on:end"]){const e=new n(t);t["on:end"](r,e),e.ignore&&(i=!1)}if(i){for(;t.endsParent&&t.parent;)t=t.parent;return t}}if(t.endsWithParent)return e(t.parent,r,a)}(y,e,r);if(!a)return M;var i=y;i.skip?A+=t:(i.returnEnd||i.excludeEnd||(A+=t),u(),i.excludeEnd&&(A=t));do{y.className&&O.closeNode(),y.skip||y.subLanguage||(I+=y.relevance),y=y.parent}while(y!==a.parent);return a.starts&&(a.endSameAsBegin&&(a.starts.endRe=a.endRe),h(a.starts)),i.returnEnd?0:t.length}(r);if(s!==M)return s}if("illegal"===r.type&&""===i)return 1;if(B>1e5&&B>3*r.index)throw Error("potential infinite loop, way more iterations than matches");return A+=i,i.length}var E=T(e);if(!E)throw console.error(g.replace("{}",e)),Error('Unknown language: "'+e+'"');var _=function(e){function n(n,t){return RegExp(d(n),"m"+(e.case_insensitive?"i":"")+(t?"g":""))}class t{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,n){n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]),this.matchAt+=function(e){return RegExp(e.toString()+"|").exec("").length-1}(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=n(function(e,n="|"){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",i=0;i0&&(a+=n),a+="(";o.length>0;){var l=t.exec(o);if(null==l){a+=o;break}a+=o.substring(0,l.index),o=o.substring(l.index+l[0].length),"\\"===l[0][0]&&l[1]?a+="\\"+(+l[1]+s):(a+=l[0],"("===l[0]&&r++)}a+=")"}return a}(e),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const n=this.matcherRe.exec(e);if(!n)return null;const t=n.findIndex((e,n)=>n>0&&void 0!==e),r=this.matchIndexes[t];return n.splice(0,t),Object.assign(n,r)}}class a{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const n=new t;return this.rules.slice(e).forEach(([e,t])=>n.addRule(e,t)),n.compile(),this.multiRegexes[e]=n,n}considerAll(){this.regexIndex=0}addRule(e,n){this.rules.push([e,n]),"begin"===n.type&&this.count++}exec(e){const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex;const t=n.exec(e);return t&&(this.regexIndex+=t.position+1,this.regexIndex===this.count&&(this.regexIndex=0)),t}}function i(e,n){const t=e.input[e.index-1],r=e.input[e.index+e[0].length];"."!==t&&"."!==r||n.ignoreMatch()}if(e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return function t(s,o){const l=s;if(s.compiled)return l;s.compiled=!0,s.__beforeBegin=null,s.keywords=s.keywords||s.beginKeywords;let c=null;if("object"==typeof s.keywords&&(c=s.keywords.$pattern,delete s.keywords.$pattern),s.keywords&&(s.keywords=function(e,n){var t={};return"string"==typeof e?r("keyword",e):Object.keys(e).forEach((function(n){r(n,e[n])})),t;function r(e,r){n&&(r=r.toLowerCase()),r.split(" ").forEach((function(n){var r=n.split("|");t[r[0]]=[e,w(r[0],r[1])]}))}}(s.keywords,e.case_insensitive)),s.lexemes&&c)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return l.keywordPatternRe=n(s.lexemes||c||/\w+/,!0),o&&(s.beginKeywords&&(s.begin="\\b("+s.beginKeywords.split(" ").join("|")+")(?=\\b|\\s)",s.__beforeBegin=i),s.begin||(s.begin=/\B|\b/),l.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),s.end&&(l.endRe=n(s.end)),l.terminator_end=d(s.end)||"",s.endsWithParent&&o.terminator_end&&(l.terminator_end+=(s.end?"|":"")+o.terminator_end)),s.illegal&&(l.illegalRe=n(s.illegal)),void 0===s.relevance&&(s.relevance=1),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((function(e){return function(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map((function(n){return r(e,{variants:null},n)}))),e.cached_variants?e.cached_variants:function e(n){return!!n&&(n.endsWithParent||e(n.starts))}(e)?r(e,{starts:e.starts?r(e.starts):null}):Object.isFrozen(e)?r(e):e}("self"===e?s:e)}))),s.contains.forEach((function(e){t(e,l)})),s.starts&&t(s.starts,o),l.matcher=function(e){const n=new a;return e.contains.forEach(e=>n.addRule(e.begin,{rule:e,type:"begin"})),e.terminator_end&&n.addRule(e.terminator_end,{type:"end"}),e.illegal&&n.addRule(e.illegal,{type:"illegal"}),n}(l),l}(e)}(E),N="",y=s||_,k={},O=new f.__emitter(f);!function(){for(var e=[],n=y;n!==E;n=n.parent)n.className&&e.unshift(n.className);e.forEach(e=>O.openNode(e))}();var A="",I=0,S=0,B=0,L=!1;try{for(y.matcher.considerAll();;){B++,L?L=!1:(y.matcher.lastIndex=S,y.matcher.considerAll());const e=y.matcher.exec(o);if(!e)break;const n=x(o.substring(S,e.index),e);S=e.index+n}return x(o.substr(S)),O.closeAllNodes(),O.finalize(),N=O.toHTML(),{relevance:I,value:N,language:e,illegal:!1,emitter:O,top:y}}catch(n){if(n.message&&n.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:n.message,context:o.slice(S-100,S+100),mode:n.mode},sofar:N,relevance:0,value:R(o),emitter:O};if(l)return{illegal:!1,relevance:0,value:R(o),emitter:O,language:e,top:y,errorRaised:n};throw n}}function v(e,n){n=n||f.languages||Object.keys(i);var t=function(e){const n={relevance:0,emitter:new f.__emitter(f),value:R(e),illegal:!1,top:h};return n.emitter.addText(e),n}(e),r=t;return n.filter(T).filter(I).forEach((function(n){var a=m(n,e,!1);a.language=n,a.relevance>r.relevance&&(r=a),a.relevance>t.relevance&&(r=t,t=a)})),r.language&&(t.second_best=r),t}function x(e){return f.tabReplace||f.useBR?e.replace(c,e=>"\n"===e?f.useBR?"
    ":e:f.tabReplace?e.replace(/\t/g,f.tabReplace):e):e}function E(e){let n=null;const t=function(e){var n=e.className+" ";n+=e.parentNode?e.parentNode.className:"";const t=f.languageDetectRe.exec(n);if(t){var r=T(t[1]);return r||(console.warn(g.replace("{}",t[1])),console.warn("Falling back to no-highlight mode for this block.",e)),r?t[1]:"no-highlight"}return n.split(/\s+/).find(e=>p(e)||T(e))}(e);if(p(t))return;S("before:highlightBlock",{block:e,language:t}),f.useBR?(n=document.createElement("div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n"):n=e;const r=n.textContent,a=t?b(t,r,!0):v(r),i=k(n);if(i.length){const e=document.createElement("div");e.innerHTML=a.value,a.value=O(i,k(e),r)}a.value=x(a.value),S("after:highlightBlock",{block:e,result:a}),e.innerHTML=a.value,e.className=function(e,n,t){var r=n?s[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),e.includes(r)||a.push(r),a.join(" ").trim()}(e.className,t,a.language),e.result={language:a.language,re:a.relevance,relavance:a.relevance},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.relevance,relavance:a.second_best.relevance})}const N=()=>{if(!N.called){N.called=!0;var e=document.querySelectorAll("pre code");a.forEach.call(e,E)}};function T(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]}function A(e,{languageName:n}){"string"==typeof e&&(e=[e]),e.forEach(e=>{s[e]=n})}function I(e){var n=T(e);return n&&!n.disableAutodetect}function S(e,n){var t=e;o.forEach((function(e){e[t]&&e[t](n)}))}Object.assign(t,{highlight:b,highlightAuto:v,fixMarkup:x,highlightBlock:E,configure:function(e){f=y(f,e)},initHighlighting:N,initHighlightingOnLoad:function(){window.addEventListener("DOMContentLoaded",N,!1)},registerLanguage:function(e,n){var r=null;try{r=n(t)}catch(n){if(console.error("Language definition for '{}' could not be registered.".replace("{}",e)),!l)throw n;console.error(n),r=h}r.name||(r.name=e),i[e]=r,r.rawDefinition=n.bind(null,t),r.aliases&&A(r.aliases,{languageName:e})},listLanguages:function(){return Object.keys(i)},getLanguage:T,registerAliases:A,requireLanguage:function(e){var n=T(e);if(n)return n;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))},autoDetection:I,inherit:y,addPlugin:function(e){o.push(e)}}),t.debugMode=function(){l=!1},t.safeMode=function(){l=!0},t.versionString="10.1.1";for(const n in _)"object"==typeof _[n]&&e(_[n]);return Object.assign(t,_),t}({})}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("apache",function(){"use strict";return function(e){var n={className:"number",begin:"\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?"};return{name:"Apache config",aliases:["apacheconf"],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"section",begin:"",contains:[n,{className:"number",begin:":\\d{1,5}"},e.inherit(e.QUOTE_STRING_MODE,{relevance:0})]},{className:"attribute",begin:/\w+/,relevance:0,keywords:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{end:/$/,relevance:0,keywords:{literal:"on off all deny allow"},contains:[{className:"meta",begin:"\\s\\[",end:"\\]$"},{className:"variable",begin:"[\\$%]\\{",end:"\\}",contains:["self",{className:"number",begin:"[\\$%]\\d+"}]},n,{className:"number",begin:"\\d+"},e.QUOTE_STRING_MODE]}}],illegal:/\S/}}}()); +hljs.registerLanguage("bash",function(){"use strict";return function(e){const s={};Object.assign(s,{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{/,end:/\}/,contains:[{begin:/:-/,contains:[s]}]}]});const t={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,t]};t.contains.push(n);const a={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,s]},i=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10}),c={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b-?[a-z\._]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[i,e.SHEBANG(),c,a,e.HASH_COMMENT_MODE,n,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},s]}}}()); +hljs.registerLanguage("c-like",function(){"use strict";return function(e){function t(e){return"(?:"+e+")?"}var n="(decltype\\(auto\\)|"+t("[a-zA-Z_]\\w*::")+"[a-zA-Z_]\\w*"+t("<.*?>")+")",r={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},a={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},i={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},s={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(a,{className:"meta-string"}),{className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},o={className:"title",begin:t("[a-zA-Z_]\\w*::")+e.IDENT_RE,relevance:0},c=t("[a-zA-Z_]\\w*::")+e.IDENT_RE+"\\s*\\(",l={keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_t short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary",literal:"true false nullptr NULL"},d=[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,a],_={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:l,contains:d.concat([{begin:/\(/,end:/\)/,keywords:l,contains:d.concat(["self"]),relevance:0}]),relevance:0},u={className:"function",begin:"("+n+"[\\*&\\s]+)+"+c,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:l,illegal:/[^\w\s\*&:<>]/,contains:[{begin:"decltype\\(auto\\)",keywords:l,relevance:0},{begin:c,returnBegin:!0,contains:[o],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:l,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,i,r,{begin:/\(/,end:/\)/,keywords:l,relevance:0,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,i,r]}]},r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s]};return{aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],keywords:l,disableAutodetect:!0,illegal:"",keywords:l,contains:["self",r]},{begin:e.IDENT_RE+"::",keywords:l},{className:"class",beginKeywords:"class struct",end:/[{;:]/,contains:[{begin://,contains:["self"]},e.TITLE_MODE]}]),exports:{preprocessor:s,strings:a,keywords:l}}}}()); +hljs.registerLanguage("c",function(){"use strict";return function(e){var n=e.getLanguage("c-like").rawDefinition();return n.name="C",n.aliases=["c","h"],n}}()); +hljs.registerLanguage("coffeescript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);return function(r){var t={keyword:e.concat(["then","unless","until","loop","by","when","and","or","is","isnt","not"]).filter((e=>n=>!e.includes(n))(["var","const","let","function","static"])).join(" "),literal:n.concat(["yes","no","on","off"]).join(" "),built_in:a.concat(["npm","print"]).join(" ")},i="[A-Za-z$_][0-9A-Za-z$_]*",s={className:"subst",begin:/#\{/,end:/}/,keywords:t},o=[r.BINARY_NUMBER_MODE,r.inherit(r.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[r.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[r.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[r.BACKSLASH_ESCAPE,s]},{begin:/"/,end:/"/,contains:[r.BACKSLASH_ESCAPE,s]}]},{className:"regexp",variants:[{begin:"///",end:"///",contains:[s,r.HASH_COMMENT_MODE]},{begin:"//[gim]{0,3}(?=\\W)",relevance:0},{begin:/\/(?![ *]).*?(?![\\]).\/[gim]{0,3}(?=\W)/}]},{begin:"@"+i},{subLanguage:"javascript",excludeBegin:!0,excludeEnd:!0,variants:[{begin:"```",end:"```"},{begin:"`",end:"`"}]}];s.contains=o;var c=r.inherit(r.TITLE_MODE,{begin:i}),l={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(o)}]};return{name:"CoffeeScript",aliases:["coffee","cson","iced"],keywords:t,illegal:/\/\*/,contains:o.concat([r.COMMENT("###","###"),r.HASH_COMMENT_MODE,{className:"function",begin:"^\\s*"+i+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[c,l]},{begin:/[:\(,=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[l]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[c]},c]},{begin:i+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}}()); +hljs.registerLanguage("cpp",function(){"use strict";return function(e){var t=e.getLanguage("c-like").rawDefinition();return t.disableAutodetect=!1,t.name="C++",t.aliases=["cc","c++","h++","hpp","hh","hxx","cxx"],t}}()); +hljs.registerLanguage("csharp",function(){"use strict";return function(e){var n={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield",literal:"null false true"},i=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),a={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},s={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},t=e.inherit(s,{illegal:/\n/}),l={className:"subst",begin:"{",end:"}",keywords:n},r=e.inherit(l,{illegal:/\n/}),c={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,r]},o={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},l]},g=e.inherit(o,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]});l.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE],r.contains=[g,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var d={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},i]},_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",b={begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},d,a,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},i,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+_+"\\s+)+"+e.IDENT_RE+"\\s*(\\<.+\\>)?\\s*\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{begin:e.IDENT_RE+"\\s*(\\<.+\\>)?\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE,E],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,contains:[d,a,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}}()); +hljs.registerLanguage("css",function(){"use strict";return function(e){var n={begin:/(?:[A-Z\_\.\-]+|--[a-zA-Z0-9_-]+)\s*:/,returnBegin:!0,end:";",endsWithParent:!0,contains:[{className:"attribute",begin:/\S/,end:":",excludeEnd:!0,starts:{endsWithParent:!0,excludeEnd:!0,contains:[{begin:/[\w-]+\(/,returnBegin:!0,contains:[{className:"built_in",begin:/[\w-]+/},{begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"#[0-9A-Fa-f]+"},{className:"meta",begin:"!important"}]}}]};return{name:"CSS",case_insensitive:!0,illegal:/[=\/|'\$]/,contains:[e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/},{className:"selector-class",begin:/\.[A-Za-z0-9_-]+/},{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"@(page|font-face)",lexemes:"@[a-z-]+",keywords:"@page @font-face"},{begin:"@",end:"[{;]",illegal:/:/,returnBegin:!0,contains:[{className:"keyword",begin:/@\-?\w[\w]*(\-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:"and or not only",contains:[{begin:/[a-z-]+:/,className:"attribute"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{begin:"{",end:"}",illegal:/\S/,contains:[e.C_BLOCK_COMMENT_MODE,n]}]}}}()); +hljs.registerLanguage("diff",function(){"use strict";return function(e){return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,variants:[{begin:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{begin:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{begin:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{className:"comment",variants:[{begin:/Index: /,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^\-{3}/,end:/$/},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/}]},{className:"addition",begin:"^\\+",end:"$"},{className:"deletion",begin:"^\\-",end:"$"},{className:"addition",begin:"^\\!",end:"$"}]}}}()); +hljs.registerLanguage("go",function(){"use strict";return function(e){var n={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{name:"Go",aliases:["golang"],keywords:n,illegal:"e(n)).join("")}return function(a){var s={className:"number",relevance:0,variants:[{begin:/([\+\-]+)?[\d]+_[\d_]+/},{begin:a.NUMBER_RE}]},i=a.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];var t={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)}/}]},r={className:"literal",begin:/\bon|off|true|false|yes|no\b/},l={className:"string",contains:[a.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,s,"self"],relevance:0},g="("+[/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/].map(n=>e(n)).join("|")+")";return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[i,{className:"section",begin:/\[+/,end:/\]+/},{begin:n(g,"(\\s*\\.\\s*",g,")*",n("(?=",/\s*=\s*[^#\s]/,")")),className:"attr",starts:{end:/$/,contains:[i,c,r,t,l,s]}}]}}}()); +hljs.registerLanguage("java",function(){"use strict";function e(e){return e?"string"==typeof e?e:e.source:null}function n(e){return a("(",e,")?")}function a(...n){return n.map(n=>e(n)).join("")}function s(...n){return"("+n.map(n=>e(n)).join("|")+")"}return function(e){var t="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",i={className:"meta",begin:"@[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},r=e=>a("[",e,"]+([",e,"_]*[",e,"]+)?"),c={className:"number",variants:[{begin:`\\b(0[bB]${r("01")})[lL]?`},{begin:`\\b(0${r("0-7")})[dDfFlL]?`},{begin:a(/\b0[xX]/,s(a(r("a-fA-F0-9"),/\./,r("a-fA-F0-9")),a(r("a-fA-F0-9"),/\.?/),a(/\./,r("a-fA-F0-9"))),/([pP][+-]?(\d+))?/,/[fFdDlL]?/)},{begin:a(/\b/,s(a(/\d*\./,r("\\d")),r("\\d")),/[eE][+-]?[\d]+[dDfF]?/)},{begin:a(/\b/,r(/\d/),n(/\.?/),n(r(/\d/)),/[dDfFlL]?/)}],relevance:0};return{name:"Java",aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},c,i]}}}()); +hljs.registerLanguage("javascript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function s(e){return r("(?=",e,")")}function r(...e){return e.map(e=>(function(e){return e?"string"==typeof e?e:e.source:null})(e)).join("")}return function(t){var i="[A-Za-z$_][0-9A-Za-z$_]*",c={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/},o={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:e.join(" "),literal:n.join(" "),built_in:a.join(" ")},l={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:t.C_NUMBER_RE+"n?"}],relevance:0},E={className:"subst",begin:"\\$\\{",end:"\\}",keywords:o,contains:[]},d={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,E],subLanguage:"xml"}},g={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,E],subLanguage:"css"}},u={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,E]};E.contains=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,d,g,u,l,t.REGEXP_MODE];var b=E.contains.concat([{begin:/\(/,end:/\)/,contains:["self"].concat(E.contains,[t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE])},t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]),_={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:b};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:o,contains:[t.SHEBANG({binary:"node",relevance:5}),{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,d,g,u,t.C_LINE_COMMENT_MODE,t.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",end:"\\}",relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,l,{begin:r(/[{,\n]\s*/,s(r(/(((\/\/.*)|(\/\*(.|\n)*\*\/))\s*)*/,i+"\\s*:"))),relevance:0,contains:[{className:"attr",begin:i+s("\\s*:"),relevance:0}]},{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.REGEXP_MODE,{className:"function",begin:"(\\([^(]*(\\([^(]*(\\([^(]*\\))?\\))?\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,contains:b}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:"<>",end:""},{begin:c.begin,end:c.end}],subLanguage:"xml",contains:[{begin:c.begin,end:c.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[t.inherit(t.TITLE_MODE,{begin:i}),_],illegal:/\[|%/},{begin:/\$[(.]/},t.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0},{begin:"(get|set)\\s+(?="+i+"\\()",end:/{/,keywords:"get set",contains:[t.inherit(t.TITLE_MODE,{begin:i}),{begin:/\(\)/},_]}],illegal:/#(?!!)/}}}()); +hljs.registerLanguage("json",function(){"use strict";return function(n){var e={literal:"true false null"},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],t=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],a={end:",",endsWithParent:!0,excludeEnd:!0,contains:t,keywords:e},l={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(a,{begin:/:/})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(a)],illegal:"\\S"};return t.push(l,s),i.forEach((function(n){t.push(n)})),{name:"JSON",contains:t,keywords:e,illegal:"\\S"}}}()); +hljs.registerLanguage("kotlin",function(){"use strict";return function(e){var n={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},a={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},i={className:"subst",begin:"\\${",end:"}",contains:[e.C_NUMBER_MODE]},s={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},t={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[s,i]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,s,i]}]};i.contains.push(t);var r={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},l={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(t,{className:"meta-string"})]}]},c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),o={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},d=o;return d.variants[1].contains=[o],o.variants[1].contains=[d],{name:"Kotlin",aliases:["kt"],keywords:n,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},a,r,l,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:n,illegal:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin://,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[o,e.C_LINE_COMMENT_MODE,c],relevance:0},e.C_LINE_COMMENT_MODE,c,r,l,t,e.C_NUMBER_MODE]},c]},{className:"class",beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,excludeBegin:!0,returnEnd:!0},r,l]},t,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},{className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0}]}}}()); +hljs.registerLanguage("less",function(){"use strict";return function(e){var n="([\\w-]+|@{[\\w-]+})",a=[],s=[],t=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},r=function(e,n,a){return{className:e,begin:n,relevance:a}},i={begin:"\\(",end:"\\)",contains:s,relevance:0};s.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t("'"),t('"'),e.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},r("number","#[0-9A-Fa-f]+\\b"),i,r("variable","@@?[\\w-]+",10),r("variable","@{[\\w-]+}"),r("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},{className:"meta",begin:"!important"});var c=s.concat({begin:"{",end:"}",contains:a}),l={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(s)},o={begin:n+"\\s*:",returnBegin:!0,end:"[;}]",relevance:0,contains:[{className:"attribute",begin:n,end:":",excludeEnd:!0,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:s}}]},g={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",returnEnd:!0,contains:s,relevance:0}},d={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:c}},b={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:n,end:"{"}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,r("keyword","all\\b"),r("variable","@{[\\w-]+}"),r("selector-tag",n+"%?",0),r("selector-id","#"+n),r("selector-class","\\."+n,0),r("selector-tag","&",0),{className:"selector-attr",begin:"\\[",end:"\\]"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"\\(",end:"\\)",contains:c},{begin:"!important"}]};return a.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,g,d,o,b),{name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:a}}}()); +hljs.registerLanguage("lua",function(){"use strict";return function(e){var t={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},a=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[t],relevance:10})];return{name:"Lua",keywords:{$pattern:e.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:a.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:a}].concat(a)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[t],relevance:5}])}}}()); +hljs.registerLanguage("makefile",function(){"use strict";return function(e){var i={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin:"",relevance:10,contains:[a,i,t,s,{begin:"\\[",end:"\\]",contains:[{className:"meta",begin:"",contains:[a,s,i,t]}]}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},n,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:")",end:">",keywords:{name:"style"},contains:[c],starts:{end:"",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:")",end:">",keywords:{name:"script"},contains:[c],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:"",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},c]}]}}}()); +hljs.registerLanguage("markdown",function(){"use strict";return function(n){const e={begin:"<",end:">",subLanguage:"xml",relevance:0},a={begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},i={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},s={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};i.contains.push(s),s.contains.push(i);var c=[e,a];return i.contains=i.contains.concat(c),s.contains=s.contains.concat(c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:c=c.concat(i,s)},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:c}]}]},e,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},i,s,{className:"quote",begin:"^>\\s+",contains:c,end:"$"},{className:"code",variants:[{begin:"(`{3,})(.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})(.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}}()); +hljs.registerLanguage("nginx",function(){"use strict";return function(e){var n={className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{/,end:/}/},{begin:"[\\$\\@]"+e.UNDERSCORE_IDENT_RE}]},a={endsWithParent:!0,keywords:{$pattern:"[a-z/_]+",literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[n]},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:"\\s\\^",end:"\\s|{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|{|;",returnEnd:!0},{begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+[kKmMgGdshdwy]*\\b",relevance:0},n]};return{name:"Nginx config",aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE+"\\s+{",returnBegin:!0,end:"{",contains:[{className:"section",begin:e.UNDERSCORE_IDENT_RE}],relevance:0},{begin:e.UNDERSCORE_IDENT_RE+"\\s",end:";|{",returnBegin:!0,contains:[{className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:a}],relevance:0}],illegal:"[^\\s\\}]"}}}()); +hljs.registerLanguage("objectivec",function(){"use strict";return function(e){var n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n,keyword:"@interface @class @protocol @implementation"};return{name:"Objective-C",aliases:["mm","objc","obj-c"],keywords:{$pattern:n,keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},illegal:"/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+_.keyword.split(" ").join("|")+")\\b",end:"({|$)",excludeEnd:!0,keywords:_,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}}()); +hljs.registerLanguage("perl",function(){"use strict";return function(e){var n={$pattern:/[\w.]+/,keyword:"getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qq fileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmget sub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedir ioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when"},t={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:n},s={begin:"->{",end:"}"},r={variants:[{begin:/\$\d/},{begin:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{begin:/[\$%@][^\s\w{]/,relevance:0}]},i=[e.BACKSLASH_ESCAPE,t,r],a=[r,e.HASH_COMMENT_MODE,e.COMMENT("^\\=\\w","\\=cut",{endsWithParent:!0}),s,{className:"string",contains:i,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*\\<",end:"\\>",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"{\\w+}",contains:[],relevance:0},{begin:"-?\\w+\\s*\\=\\>",contains:[],relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",begin:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{className:"regexp",begin:"(m|qr)?/",end:"/[a-z]*",contains:[e.BACKSLASH_ESCAPE],relevance:0}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return t.contains=a,s.contains=a,{name:"Perl",aliases:["pl","pm"],keywords:n,contains:a}}}()); +hljs.registerLanguage("php",function(){"use strict";return function(e){var r={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},t={className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{begin:/\?>/}]},a={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},n={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},i={keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list new object or private protected public real return string switch throw trait try unset use var void while xor yield",literal:"false null true",built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Throwable Traversable WeakReference Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass"};return{aliases:["php","php3","php4","php5","php6","php7"],case_insensitive:!0,keywords:i,contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[t]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler"}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},t,{className:"keyword",begin:/\$this\b/},r,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:i,contains:["self",r,e.C_BLOCK_COMMENT_MODE,a,n]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},a,n]}}}()); +hljs.registerLanguage("php-template",function(){"use strict";return function(n){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},n.inherit(n.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),n.inherit(n.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}}()); +hljs.registerLanguage("plaintext",function(){"use strict";return function(t){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}}()); +hljs.registerLanguage("properties",function(){"use strict";return function(e){var n="[ \\t\\f]*",t="("+n+"[:=]"+n+"|[ \\t\\f]+)",a="([^\\\\:= \\t\\f\\n]|\\\\.)+",s={end:t,relevance:0,starts:{className:"string",end:/$/,relevance:0,contains:[{begin:"\\\\\\n"}]}};return{name:".properties",case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT("^\\s*[!#]","$"),{begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+"+t,returnBegin:!0,contains:[{className:"attr",begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",endsParent:!0,relevance:0}],starts:s},{begin:a+t,returnBegin:!0,relevance:0,contains:[{className:"meta",begin:a,endsParent:!0,relevance:0}],starts:s},{className:"attr",relevance:0,begin:a+n+"$"}]}}}()); +hljs.registerLanguage("python",function(){"use strict";return function(e){var n={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",built_in:"Ellipsis NotImplemented",literal:"False None True"},a={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:n,illegal:/#/},s={begin:/\{\{/,relevance:0},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a,s,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,s,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,s,i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},l={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},t={className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:["self",a,l,r,e.HASH_COMMENT_MODE]}]};return i.contains=[r,l,a],{name:"Python",aliases:["py","gyp","ipython"],keywords:n,illegal:/(<\/|->|\?)|=>/,contains:[a,l,{beginKeywords:"if",relevance:0},r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,t,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}}()); +hljs.registerLanguage("python-repl",function(){"use strict";return function(n){return{aliases:["pycon"],contains:[{className:"meta",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}}()); +hljs.registerLanguage("ruby",function(){"use strict";return function(e){var n="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",a={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},s={className:"doctag",begin:"@[A-Za-z]+"},i={begin:"#<",end:">"},r=[e.COMMENT("#","$",{contains:[s]}),e.COMMENT("^\\=begin","^\\=end",{contains:[s],relevance:10}),e.COMMENT("^__END__","\\n$")],c={className:"subst",begin:"#\\{",end:"}",keywords:a},t={className:"string",contains:[e.BACKSLASH_ESCAPE,c],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<[-~]?'?(\w+)(?:.|\n)*?\n\s*\1\b/,returnBegin:!0,contains:[{begin:/<<[-~]?'?/},e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,c]})]}]},b={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:a},d=[t,i,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(r)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:n}),b].concat(r)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[t,{begin:n}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:a},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[i,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,c],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(r),relevance:0}].concat(r);c.contains=d,b.contains=d;var g=[{begin:/^\s*=>/,starts:{end:"$",contains:d}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:d}}];return{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/,contains:r.concat(g).concat(d)}}}()); +hljs.registerLanguage("rust",function(){"use strict";return function(e){var n="([ui](8|16|32|64|128|size)|f(32|64))?",t="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",keyword:"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield",literal:"true false Some None Ok Err",built_in:t},illegal:""}]}}}()); +hljs.registerLanguage("scss",function(){"use strict";return function(e){var t={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},i={className:"number",begin:"#[0-9A-Fa-f]+"};return e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:"\\#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},{className:"selector-attr",begin:"\\[",end:"\\]",illegal:"$"},{className:"selector-tag",begin:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",relevance:0},{className:"selector-pseudo",begin:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{className:"selector-pseudo",begin:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},t,{className:"attribute",begin:"\\b(src|z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",illegal:"[^\\s]"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:":",end:";",contains:[t,i,e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"meta",begin:"!important"}]},{begin:"@(page|font-face)",lexemes:"@[a-z-]+",keywords:"@page @font-face"},{begin:"@",end:"[{;]",returnBegin:!0,keywords:"and or not only",contains:[{begin:"@[a-z-]+",className:"keyword"},t,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,i,e.CSS_NUMBER_MODE]}]}}}()); +hljs.registerLanguage("shell",function(){"use strict";return function(s){return{name:"Shell Session",aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[/\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}}()); +hljs.registerLanguage("sql",function(){"use strict";return function(e){var t=e.COMMENT("--","$");return{name:"SQL",case_insensitive:!0,illegal:/[<>{}*]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",end:/;/,endsWithParent:!0,keywords:{$pattern:/[\w\.]+/,keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[{begin:'""'}]},{className:"string",begin:"`",end:"`"},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]}}}()); +hljs.registerLanguage("swift",function(){"use strict";return function(e){var i={keyword:"#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c compactMap contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),t={className:"subst",begin:/\\\(/,end:"\\)",keywords:i,contains:[]},a={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}]},r={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0};return t.contains=[r],{name:"Swift",keywords:i,contains:[a,e.C_LINE_COMMENT_MODE,n,{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*[!?]"},{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},r,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:i,contains:["self",r,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:i,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)\\b"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,n]}]}}}()); +hljs.registerLanguage("typescript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);return function(r){var t={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:e.concat(["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"]).join(" "),literal:n.join(" "),built_in:a.concat(["any","void","number","boolean","string","object","never","enum"]).join(" ")},s={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:r.C_NUMBER_RE+"n?"}],relevance:0},o={className:"subst",begin:"\\$\\{",end:"\\}",keywords:t,contains:[]},c={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[r.BACKSLASH_ESCAPE,o],subLanguage:"xml"}},l={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[r.BACKSLASH_ESCAPE,o],subLanguage:"css"}},E={className:"string",begin:"`",end:"`",contains:[r.BACKSLASH_ESCAPE,o]};o.contains=[r.APOS_STRING_MODE,r.QUOTE_STRING_MODE,c,l,E,i,r.REGEXP_MODE];var d={begin:"\\(",end:/\)/,keywords:t,contains:["self",r.QUOTE_STRING_MODE,r.APOS_STRING_MODE,r.NUMBER_MODE]},u={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:[r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,s,d]};return{name:"TypeScript",aliases:["ts"],keywords:t,contains:[r.SHEBANG(),{className:"meta",begin:/^\s*['"]use strict['"]/},r.APOS_STRING_MODE,r.QUOTE_STRING_MODE,c,l,E,r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,i,{begin:"("+r.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,r.REGEXP_MODE,{className:"function",begin:"(\\([^(]*(\\([^(]*(\\([^(]*\\))?\\))?\\)|"+r.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:r.UNDERSCORE_IDENT_RE},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:d.contains}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[\{;]/,excludeEnd:!0,keywords:t,contains:["self",r.inherit(r.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*"}),u],illegal:/%/,relevance:0},{beginKeywords:"constructor",end:/[\{;]/,excludeEnd:!0,contains:["self",u]},{begin:/module\./,keywords:{built_in:"module"},relevance:0},{beginKeywords:"module",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},{begin:/\$[(.]/},{begin:"\\."+r.IDENT_RE,relevance:0},s,d]}}}()); +hljs.registerLanguage("yaml",function(){"use strict";return function(e){var n="true false yes no null",a="[\\w#;/?:@&=+$,.~*\\'()[\\]]+",s={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:"{{",end:"}}"},{begin:"%{",end:"}"}]}]},i=e.inherit(s,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),l={end:",",endsWithParent:!0,excludeEnd:!0,contains:[],keywords:n,relevance:0},t={begin:"{",end:"}",contains:[l],illegal:"\\n",relevance:0},g={begin:"\\[",end:"\\]",contains:[l],illegal:"\\n",relevance:0},b=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---s*$",relevance:10},{className:"string",begin:"[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+a},{className:"type",begin:"!<"+a+">"},{className:"type",begin:"!"+a},{className:"type",begin:"!!"+a},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"\\-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},{className:"number",begin:e.C_NUMBER_RE+"\\b"},t,g,s],c=[...b];return c.pop(),c.push(i),l.contains=c,{name:"YAML",case_insensitive:!0,aliases:["yml","YAML"],contains:b}}}()); +hljs.registerLanguage("armasm",function(){"use strict";return function(s){const e={variants:[s.COMMENT("^[ \\t]*(?=#)","$",{relevance:0,excludeBegin:!0}),s.COMMENT("[;@]","$",{relevance:0}),s.C_LINE_COMMENT_MODE,s.C_BLOCK_COMMENT_MODE]};return{name:"ARM Assembly",case_insensitive:!0,aliases:["arm"],keywords:{$pattern:"\\.?"+s.IDENT_RE,meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @"},contains:[{className:"keyword",begin:"\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?(?=\\s)"},e,s.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"[#$=]?0x[0-9a-f]+"},{begin:"[#$=]?0b[01]+"},{begin:"[#$=]\\d+"},{begin:"\\b\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^[ \\t]*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^[a-z_\\.\\$][a-z0-9_\\.\\$]+"},{begin:"[=#]\\w+"}],relevance:0}]}}}()); +hljs.registerLanguage("d",function(){"use strict";return function(e){var a={$pattern:e.UNDERSCORE_IDENT_RE,keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",literal:"false null true"},d="((0|[1-9][\\d_]*)|0[bB][01_]+|0[xX]([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))",n="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",t={className:"number",begin:"\\b"+d+"(L|u|U|Lu|LU|uL|UL)?",relevance:0},_={className:"number",begin:"\\b(((0[xX](([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)\\.([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)|\\.?([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))[pP][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))|((0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(\\.\\d*|([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)))|\\d+\\.(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)|\\.(0|[1-9][\\d_]*)([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))?))([fF]|L|i|[fF]i|Li)?|"+d+"(i|[fF]i|Li))",relevance:0},r={className:"string",begin:"'("+n+"|.)",end:"'",illegal:"."},i={className:"string",begin:'"',contains:[{begin:n,relevance:0}],end:'"[cwd]?'},s=e.COMMENT("\\/\\+","\\+\\/",{contains:["self"],relevance:10});return{name:"D",keywords:a,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{className:"string",begin:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',relevance:10},i,{className:"string",begin:'[rq]"',end:'"[cwd]?',relevance:5},{className:"string",begin:"`",end:"`[cwd]?"},{className:"string",begin:'q"\\{',end:'\\}"'},_,t,r,{className:"meta",begin:"^#!",end:"$",relevance:5},{className:"meta",begin:"#(line)",end:"$",relevance:5},{className:"keyword",begin:"@[a-zA-Z_][a-zA-Z_\\d]*"}]}}}()); +hljs.registerLanguage("handlebars",function(){"use strict";function e(...e){return e.map(e=>(function(e){return e?"string"==typeof e?e:e.source:null})(e)).join("")}return function(n){const a={"builtin-name":"action bindattr collection component concat debugger each each-in get hash if in input link-to loc log lookup mut outlet partial query-params render template textarea unbound unless view with yield"},t=/\[.*?\]/,s=/[^\s!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/,i=e("(",/'.*?'/,"|",/".*?"/,"|",t,"|",s,"|",/\.|\//,")+"),r=e("(",t,"|",s,")(?==)"),l={begin:i,lexemes:/[\w.\/]+/},c=n.inherit(l,{keywords:{literal:"true false undefined null"}}),o={begin:/\(/,end:/\)/},m={className:"attr",begin:r,relevance:0,starts:{begin:/=/,end:/=/,starts:{contains:[n.NUMBER_MODE,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,c,o]}}},d={contains:[n.NUMBER_MODE,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,{begin:/as\s+\|/,keywords:{keyword:"as"},end:/\|/,contains:[{begin:/\w+/}]},m,c,o],returnEnd:!0},g=n.inherit(l,{className:"name",keywords:a,starts:n.inherit(d,{end:/\)/})});o.contains=[g];const u=n.inherit(l,{keywords:a,className:"name",starts:n.inherit(d,{end:/}}/})}),b=n.inherit(l,{keywords:a,className:"name"}),h=n.inherit(l,{className:"name",keywords:a,starts:n.inherit(d,{end:/}}/})});return{name:"Handlebars",aliases:["hbs","html.hbs","html.handlebars","htmlbars"],case_insensitive:!0,subLanguage:"xml",contains:[{begin:/\\\{\{/,skip:!0},{begin:/\\\\(?=\{\{)/,skip:!0},n.COMMENT(/\{\{!--/,/--\}\}/),n.COMMENT(/\{\{!/,/\}\}/),{className:"template-tag",begin:/\{\{\{\{(?!\/)/,end:/\}\}\}\}/,contains:[u],starts:{end:/\{\{\{\{\//,returnEnd:!0,subLanguage:"xml"}},{className:"template-tag",begin:/\{\{\{\{\//,end:/\}\}\}\}/,contains:[b]},{className:"template-tag",begin:/\{\{#/,end:/\}\}/,contains:[u]},{className:"template-tag",begin:/\{\{(?=else\}\})/,end:/\}\}/,keywords:"else"},{className:"template-tag",begin:/\{\{\//,end:/\}\}/,contains:[b]},{className:"template-variable",begin:/\{\{\{/,end:/\}\}\}/,contains:[h]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[h]}]}}}()); +hljs.registerLanguage("haskell",function(){"use strict";return function(e){var n={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},i={className:"meta",begin:"{-#",end:"#-}"},a={className:"meta",begin:"^#",end:"$"},s={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},l={begin:"\\(",end:"\\)",illegal:'"',contains:[i,a,{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TITLE_MODE,{begin:"[_a-z][\\w']*"}),n]};return{name:"Haskell",aliases:["hs"],keywords:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",contains:[{beginKeywords:"module",end:"where",keywords:"module where",contains:[l,n],illegal:"\\W\\.|;"},{begin:"\\bimport\\b",end:"$",keywords:"import qualified as hiding",contains:[l,n],illegal:"\\W\\.|;"},{className:"class",begin:"^(\\s*)?(class|instance)\\b",end:"where",keywords:"class family instance where",contains:[s,l,n]},{className:"class",begin:"\\b(data|(new)?type)\\b",end:"$",keywords:"data family type newtype deriving",contains:[i,s,l,{begin:"{",end:"}",contains:l.contains},n]},{beginKeywords:"default",end:"$",contains:[s,l,n]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,n]},{begin:"\\bforeign\\b",end:"$",keywords:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",contains:[s,e.QUOTE_STRING_MODE,n]},{className:"meta",begin:"#!\\/usr\\/bin\\/env runhaskell",end:"$"},i,a,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,s,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),n,{begin:"->|<-"}]}}}()); +hljs.registerLanguage("julia",function(){"use strict";return function(e){var r="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",t={$pattern:r,keyword:"in isa where baremodule begin break catch ccall const continue do else elseif end export false finally for function global if import importall let local macro module quote return true try using while type immutable abstract bitstype typealias ",literal:"true false ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im nothing pi γ π φ ",built_in:"ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool "},a={keywords:t,illegal:/<\//},n={className:"subst",begin:/\$\(/,end:/\)/,keywords:t},o={className:"variable",begin:"\\$"+r},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n,o],variants:[{begin:/\w*"""/,end:/"""\w*/,relevance:10},{begin:/\w*"/,end:/"\w*/}]},l={className:"string",contains:[e.BACKSLASH_ESCAPE,n,o],begin:"`",end:"`"},s={className:"meta",begin:"@"+r};return a.name="Julia",a.contains=[{className:"number",begin:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,relevance:0},{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},i,l,s,{className:"comment",variants:[{begin:"#=",end:"=#",relevance:10},{begin:"#",end:"$"}]},e.HASH_COMMENT_MODE,{className:"keyword",begin:"\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b"},{begin:/<:/}],n.contains=a.contains,a}}()); +hljs.registerLanguage("nim",function(){"use strict";return function(e){return{name:"Nim",aliases:["nim"],keywords:{keyword:"addr and as asm bind block break case cast const continue converter discard distinct div do elif else end enum except export finally for from func generic if import in include interface is isnot iterator let macro method mixin mod nil not notin object of or out proc ptr raise ref return shl shr static template try tuple type using var when while with without xor yield",literal:"shared guarded stdin stdout stderr result true false",built_in:"int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float float32 float64 bool char string cstring pointer expr stmt void auto any range array openarray varargs seq set clong culong cchar cschar cshort cint csize clonglong cfloat cdouble clongdouble cuchar cushort cuint culonglong cstringarray semistatic"},contains:[{className:"meta",begin:/{\./,end:/\.}/,relevance:10},{className:"string",begin:/[a-zA-Z]\w*"/,end:/"/,contains:[{begin:/""/}]},{className:"string",begin:/([a-zA-Z]\w*)?"""/,end:/"""/},e.QUOTE_STRING_MODE,{className:"type",begin:/\b[A-Z]\w+\b/,relevance:0},{className:"number",relevance:0,variants:[{begin:/\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},{begin:/\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},{begin:/\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},{begin:/\b(\d[_\d]*)('?[iIuUfF](8|16|32|64))?/}]},e.HASH_COMMENT_MODE]}}}()); +hljs.registerLanguage("r",function(){"use strict";return function(e){var n="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{name:"R",contains:[e.HASH_COMMENT_MODE,{begin:n,keywords:{$pattern:n,keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{begin:"`",end:"`",relevance:0},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]}]}}}()); +hljs.registerLanguage("scala",function(){"use strict";return function(e){var n={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:"\\${",end:"}"}]},a={className:"string",variants:[{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'"""',end:'"""',relevance:10},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,n]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[n],relevance:10}]},s={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},t={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0},i={className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[s]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[s]},t]},l={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[t]};return{name:"Scala",keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,{className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},s,l,i,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}}()); +hljs.registerLanguage("x86asm",function(){"use strict";return function(s){return{name:"Intel x86 Assembly",case_insensitive:!0,keywords:{$pattern:"[.%]?"+s.IDENT_RE,keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63",built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr",meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__"},contains:[s.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\b",relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b"},{begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b"}]},s.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst",begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{className:"meta",begin:/^\s*\.[\w_-]+/}]}}}()); \ No newline at end of file diff --git a/theme/index.hbs b/theme/index.hbs new file mode 100644 index 0000000..080b785 --- /dev/null +++ b/theme/index.hbs @@ -0,0 +1,346 @@ + + + + + + {{ title }} + {{#if is_print }} + + {{/if}} + {{#if base_url}} + + {{/if}} + + + + {{> head}} + + + + + + {{#if favicon_svg}} + + {{/if}} + {{#if favicon_png}} + + {{/if}} + + + + {{#if print_enable}} + + {{/if}} + + + + {{#if copy_fonts}} + + {{/if}} + + + + + + + + {{#each additional_css}} + + {{/each}} + + {{#if mathjax_support}} + + + {{/if}} + + +
    + + From b372c9c3174c40445a04aabc536f7ff6a8312e7b Mon Sep 17 00:00:00 2001 From: krmanik <12841290+krmanik@users.noreply.github.com> Date: Fri, 2 Feb 2024 02:27:10 +0800 Subject: [PATCH 03/11] add theme with languge picker, rtl and kbd --- theme/css/kbd.css | 26 +++++++++++++++++++ theme/css/language-picker.css | 14 ++++++++++ theme/css/rtl.css | 10 ++++++++ theme/index.hbs | 48 +++++++++++++++++++++++++++++++++++ 4 files changed, 98 insertions(+) create mode 100644 theme/css/kbd.css create mode 100644 theme/css/language-picker.css create mode 100644 theme/css/rtl.css diff --git a/theme/css/kbd.css b/theme/css/kbd.css new file mode 100644 index 0000000..102b2b5 --- /dev/null +++ b/theme/css/kbd.css @@ -0,0 +1,26 @@ +.ayu, +.coal, +.navy { + --kbd-bg: var(--table-header-bg); + --kbd-border: var(--bg); +} + +.light { + --kbd-bg: var(--theme-hover); + --kbd-border: var(--table-header-bg); +} + +.rust { + --kbd-bg: var(--table-header-bg); + --kbd-border: var(--theme-hover); +} + +kbd { + margin: 0.1em 0.1em; + padding: 0.1em 0.6em; + font-family: sans-serif; + border-radius: 4px; + display: inline-block; + border: 1px var(--kbd-border) solid; + background-color: var(--kbd-bg); +} \ No newline at end of file diff --git a/theme/css/language-picker.css b/theme/css/language-picker.css new file mode 100644 index 0000000..20f01bc --- /dev/null +++ b/theme/css/language-picker.css @@ -0,0 +1,14 @@ +#language-list { + left: auto; + right: 10px; + } + + #language-list a { + color: inherit; + } + + [dir=rtl] #language-list { + left: 10px; + right: auto; + } + \ No newline at end of file diff --git a/theme/css/rtl.css b/theme/css/rtl.css new file mode 100644 index 0000000..0278897 --- /dev/null +++ b/theme/css/rtl.css @@ -0,0 +1,10 @@ +[dir="rtl"] .hljs, +[dir="rtl"] pre > code { + text-align: left; +} +[dir="rtl"] #cookieBar { + direction: ltr; +} +[dir="rtl"] svg { + direction: ltr; +} diff --git a/theme/index.hbs b/theme/index.hbs index 080b785..2195f7f 100644 --- a/theme/index.hbs +++ b/theme/index.hbs @@ -169,6 +169,47 @@

    {{ book_title }}

    + + + + {{#if print_enable}} @@ -180,9 +221,16 @@ {{/if}} {{#if git_repository_edit_url}} + {{#if (eq language "en")}} + {{else}} + + + + {{/if}} {{/if}}
    From 5b303e7b55b579bdfa675c330380ce36d669f75b Mon Sep 17 00:00:00 2001 From: krmanik <12841290+krmanik@users.noreply.github.com> Date: Fri, 2 Feb 2024 02:50:14 +0800 Subject: [PATCH 04/11] add book.toml, Cargo.toml, dprint.json, nojekyll and gitignore --- .gitignore | 19 ++++++++++++++++++- .nojekyll | 0 Cargo.toml | 4 ++++ book.toml | 47 ++++++++++++++++++++++++++++++++++++++++++++++- dprint.json | 17 +++++++++++++++++ 5 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 .nojekyll create mode 100644 Cargo.toml create mode 100644 dprint.json diff --git a/.gitignore b/.gitignore index 7585238..7b08049 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,18 @@ -book +# Build artifacts +/book/ +target/ +*.bin + +# Translation artifacts +po/messages.pot +po/*.mo +po/*.po~ + +# macOS artifacts +.DS_Store + +# Jetbrains IDEs project files +.idea/ +.iml +.iws +count.dat diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..f28aaef --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,4 @@ +[workspace] +# Please keep the workspace members sorted. +members = [] +resolver = "2" diff --git a/book.toml b/book.toml index e5f2ede..36501b4 100644 --- a/book.toml +++ b/book.toml @@ -1,6 +1,51 @@ [book] -authors = ["krmanik"] +authors = ["AnkiDroid Open Source Team"] language = "en" multilingual = false src = "src" title = "AnkiDroid Manual" + +[rust] +edition = "2021" + +[build] +extra-watch-dirs = ["po"] + +[preprocessor.gettext] +after = ["links"] + +[output.html] +curly-quotes = true +cname = "docs.ankidroid.org" +additional-css = [ + "theme/css/kbd.css", + "theme/css/language-picker.css", + "theme/css/rtl.css", +] +site-url = "/ankidroiddocs/" +git-repository-url = "https://github.com/ankidroid/ankidroiddocs/" +edit-url-template = "https://github.com/ankidroid/ankidroiddocs/edit/main/{path}" + +[preprocessor.toc] +command = "mdbook-toc" +renderer = ["html"] + +[output.linkcheck] +optional = true +warning-policy = "warn" +follow-web-links = true +exclude = [ + 'microsoft.com', + 'twitter.com', + 'stackexchange.com', + 'https://github.com/open-spaced-repetition/fsrs4anki#add-on-compatibility', + 'support.google.com', + 'reddit.com', +] + +[output.html.fold] +enable = true +level = 0 + +[output.html.search] +use-boolean-and = true diff --git a/dprint.json b/dprint.json new file mode 100644 index 0000000..a4369ac --- /dev/null +++ b/dprint.json @@ -0,0 +1,17 @@ +{ + "json": { + }, + "markdown": { + }, + "toml": { + }, + "includes": ["**/*.{json,md,toml}"], + "excludes": [ + "**/*-lock.json" + ], + "plugins": [ + "https://plugins.dprint.dev/json-0.17.1.wasm", + "https://plugins.dprint.dev/markdown-0.15.2.wasm", + "https://plugins.dprint.dev/toml-0.5.4.wasm" + ] +} From e93d508a02d3d1e31917d5b7da9713871b97e93b Mon Sep 17 00:00:00 2001 From: krmanik <12841290+krmanik@users.noreply.github.com> Date: Fri, 2 Feb 2024 02:56:23 +0800 Subject: [PATCH 05/11] add markdown format for ankidroid docs --- src/SUMMARY.md | 56 +++++- src/adding-notes.md | 36 ++++ src/advanced-features/advanced-statistics.md | 29 +++ src/advanced-features/custom-fonts.md | 15 ++ .../customizing-card-layout.md | 6 + src/advanced-features/intro.md | 10 + src/advanced-features/mathjax.md | 14 ++ src/advanced-features/reminders.md | 7 + src/advanced-features/reverse-cards.md | 11 + src/advanced-features/set-language-hint.md | 5 + src/advanced-features/type-in-answer.md | 25 +++ src/alpha-testing.md | 6 + src/anki-desktop.md | 33 +++ src/ankiweb-conflicts.md | 45 +++++ src/backups.md | 8 + src/beta-testing.md | 13 ++ src/browser.md | 54 +++++ src/changelog.md | 19 ++ src/changelog/intro.md | 0 src/changelog/v0.1-to-1.1.3.md | 5 + src/changelog/v2.0.md | 43 ++++ src/changelog/v2.1.md | 18 ++ src/changelog/v2.10.md | 68 +++++++ src/changelog/v2.11.md | 55 +++++ src/changelog/v2.12.md | 23 +++ src/changelog/v2.13.md | 84 ++++++++ src/changelog/v2.14.md | 91 +++++++++ src/changelog/v2.15.md | 83 ++++++++ src/changelog/v2.16.md | 120 +++++++++++ src/changelog/v2.2.md | 25 +++ src/changelog/v2.3.md | 23 +++ src/changelog/v2.4.md | 42 ++++ src/changelog/v2.5.md | 49 +++++ src/changelog/v2.6.md | 27 +++ src/changelog/v2.7.md | 10 + src/changelog/v2.8.md | 31 +++ src/changelog/v2.9.md | 124 ++++++++++++ src/chapter_1.md | 1 - src/contributing.md | 17 ++ src/deck-overview.md | 33 +++ src/deck-picker.md | 127 ++++++++++++ src/drawer.md | 28 +++ src/editing-notes.md | 28 +++ src/exporting.md | 34 ++++ src/filtered-deck.md | 13 ++ src/gestures.md | 188 ++++++++++++++++++ src/getting-started.md | 6 + src/help.md | 34 ++++ src/img/1-decks.png | Bin 0 -> 17133 bytes src/img/2-navigation_drawer.png | Bin 0 -> 10516 bytes src/img/3-deck_overview.png | Bin 0 -> 11973 bytes src/img/4-reviewer.png | Bin 0 -> 20578 bytes src/img/5-adding.png | Bin 0 -> 11427 bytes src/img/6-browser.png | Bin 0 -> 23275 bytes src/img/AlphaTestJoinGroup.png | Bin 0 -> 58609 bytes src/img/AnkiDesktop.png | Bin 0 -> 14763 bytes src/img/DebugInfo-ru.png | Bin 0 -> 104337 bytes src/img/DebugInfo.png | Bin 0 -> 21692 bytes src/img/ReverseNoteType.png | Bin 0 -> 10639 bytes src/importing/importing-anki-databases.md | 14 ++ src/importing/importing-anki-files.md | 22 ++ src/intro.md | 9 + src/keyboard-shortcuts.md | 66 ++++++ src/note-formatting-toolbar.md | 7 + src/removed-features.md | 0 src/reviewer.md | 55 +++++ src/rtl.md | 15 ++ src/settings.md | 126 ++++++++++++ src/storage-migration-error.md | 0 69 files changed, 2134 insertions(+), 2 deletions(-) create mode 100644 src/adding-notes.md create mode 100644 src/advanced-features/advanced-statistics.md create mode 100644 src/advanced-features/custom-fonts.md create mode 100644 src/advanced-features/customizing-card-layout.md create mode 100644 src/advanced-features/intro.md create mode 100644 src/advanced-features/mathjax.md create mode 100644 src/advanced-features/reminders.md create mode 100644 src/advanced-features/reverse-cards.md create mode 100644 src/advanced-features/set-language-hint.md create mode 100644 src/advanced-features/type-in-answer.md create mode 100644 src/alpha-testing.md create mode 100644 src/anki-desktop.md create mode 100644 src/ankiweb-conflicts.md create mode 100644 src/backups.md create mode 100644 src/beta-testing.md create mode 100644 src/browser.md create mode 100644 src/changelog.md create mode 100644 src/changelog/intro.md create mode 100644 src/changelog/v0.1-to-1.1.3.md create mode 100644 src/changelog/v2.0.md create mode 100644 src/changelog/v2.1.md create mode 100644 src/changelog/v2.10.md create mode 100644 src/changelog/v2.11.md create mode 100644 src/changelog/v2.12.md create mode 100644 src/changelog/v2.13.md create mode 100644 src/changelog/v2.14.md create mode 100644 src/changelog/v2.15.md create mode 100644 src/changelog/v2.16.md create mode 100644 src/changelog/v2.2.md create mode 100644 src/changelog/v2.3.md create mode 100644 src/changelog/v2.4.md create mode 100644 src/changelog/v2.5.md create mode 100644 src/changelog/v2.6.md create mode 100644 src/changelog/v2.7.md create mode 100644 src/changelog/v2.8.md create mode 100644 src/changelog/v2.9.md delete mode 100644 src/chapter_1.md create mode 100644 src/contributing.md create mode 100644 src/deck-overview.md create mode 100644 src/deck-picker.md create mode 100644 src/drawer.md create mode 100644 src/editing-notes.md create mode 100644 src/exporting.md create mode 100644 src/filtered-deck.md create mode 100644 src/gestures.md create mode 100644 src/getting-started.md create mode 100644 src/help.md create mode 100644 src/img/1-decks.png create mode 100644 src/img/2-navigation_drawer.png create mode 100644 src/img/3-deck_overview.png create mode 100644 src/img/4-reviewer.png create mode 100644 src/img/5-adding.png create mode 100644 src/img/6-browser.png create mode 100644 src/img/AlphaTestJoinGroup.png create mode 100644 src/img/AnkiDesktop.png create mode 100644 src/img/DebugInfo-ru.png create mode 100644 src/img/DebugInfo.png create mode 100644 src/img/ReverseNoteType.png create mode 100644 src/importing/importing-anki-databases.md create mode 100644 src/importing/importing-anki-files.md create mode 100644 src/intro.md create mode 100644 src/keyboard-shortcuts.md create mode 100644 src/note-formatting-toolbar.md create mode 100644 src/removed-features.md create mode 100644 src/reviewer.md create mode 100644 src/rtl.md create mode 100644 src/settings.md create mode 100644 src/storage-migration-error.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 7390c82..814430e 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -1,3 +1,57 @@ # Summary -- [Chapter 1](./chapter_1.md) +[Introduction](intro.md) +- [Getting started](getting-started.md) +- [The Deck List](deck-picker.md) +- [Navigation Drawer](drawer.md) +- [Deck Overview Screen](deck-overview.md) +- [Study Screen](reviewer.md) +- [Add Note Screen](adding-notes.md) +- [Edit Note Screen](editing-notes.md) +- [Finding/Searching/Browsing](browser.md) +- [Filtered Decks](filtered-deck.md) +- [Importing Anki Files](importing/importing-anki-files.md) + - [Importing Anki Databases (.anki2)](importing/importing-anki-databases.md) +- [Exporting Anki Files](exporting.md) +- [Automatic Backups](backups.md) +- [Preferences](settings.md) +- [Gestures](gestures.md) +- [Note Formatting Toolbar](note-formatting-toolbar.md) +- [Keyboard Shortcuts](keyboard-shortcuts.md) +- [Using Right-To-Left Languages with AnkiDroid](rtl.md) +- [Using Anki Desktop with AnkiDroid](anki-desktop.md) +- [Dealing with merge conflicts on AnkiWeb](ankiweb-conflicts.md) +- [Advanced Features](advanced-features/intro.md) + - [MathJax Support](advanced-features/mathjax.md) + - [Reverse Cards](advanced-features/reverse-cards.md) + - [Custom Fonts](advanced-features/custom-fonts.md) + - [Custom Card Layout](advanced-features/customizing-card-layout.md) + - [Type in the answer feature](advanced-features/type-in-answer.md) + - [Advanced Statistics](advanced-features/advanced-statistics.md) + - [Reminders](advanced-features/reminders.md) + - [Automatic Language Selection](advanced-features/set-language-hint.md) +- [Removed Features](removed-features.md) +- [Storage Migration Error](storage-migration-error.md) +- [Help & Supports](help.md) +- [Alpha testing](alpha-testing.md) +- [Beta testing](beta-testing.md) +- [Contributing to AnkiDroid](contributing.md) +- [Changelog](intro.md) + - [Version 2.16](changelog/v2.16.md) + - [Version 2.15](changelog/v2.15.md) + - [Version 2.14](changelog/v2.14.md) + - [Version 2.13](changelog/v2.13.md) + - [Version 2.12](changelog/v2.12.md) + - [Version 2.11](changelog/v2.11.md) + - [Version 2.10](changelog/v2.10.md) + - [Version 2.9](changelog/v2.9.md) + - [Version 2.8](changelog/v2.8.md) + - [Version 2.7](changelog/v2.7.md) + - [Version 2.6](changelog/v2.6.md) + - [Version 2.5](changelog/v2.5.md) + - [Version 2.4](changelog/v2.4.md) + - [Version 2.3](changelog/v2.3.md) + - [Version 2.2](changelog/v2.2.md) + - [Version 2.1](changelog/v2.1.md) + - [Version 2.0](changelog/v2.0.md) + - [Version 0.1 to 1.1.3](changelog/v0.1-to-1.1.3.md) diff --git a/src/adding-notes.md b/src/adding-notes.md new file mode 100644 index 0000000..462684a --- /dev/null +++ b/src/adding-notes.md @@ -0,0 +1,36 @@ +# Add Note Screen + + + +*_Note:_* _This section onwards assumes you understand what [notes, fields, card templates, and note types](https://docs.ankiweb.net/getting-started.html#notes--fields) are_ + +To add a new note, tap the **+** button at the bottom of the deck list and choose **Add**. + +![adding.png](img/5-adding.png) + +The following controls are available in the add note screen: + +### Type +Allows you to select the type of note you'd like to add. +For most purposes the **Basic** note type is sufficient, but for example if you would like an extra card generated which is the reverse of the main card (i.e. shows the **Back** field on the front of the card), you could chose the **Basic (and reversed card)** note type. + +### Deck +Allows you to change the deck the generated card/cards will be added to. + +### Fields +Below the deck selector are the fields for the note (for example the **Basic** note type has two fields **Front** and **Back**). When you tap on a field, a keyboard will come up, allowing you to type in information. + +### Media Buttons +Next to each field is an attach icon, which allows you to add media to your note (this feature is currently in the experimental phase). +Add image lets you add images either via your device's camera (if it has one), or from your photo library. +Record audio allows you to record your voice and place it into a field. The advanced editor lets you automatically search for translations or pronunciation audio files online. + +### Tags +Brings up a dialog which lets you add / remove tags from the note. + +### Cards +Shows the names of the cards which will be generated for the selected note type. Tapping on this button will bring up a dialog which lets you preview the source code for the card template of the selected note type. From here you can edit, preview, add, and delete card templates. See the [cards and templates section](https://docs.ankiweb.net/templates/intro.html) of the Anki Desktop manual for more information about card templates. + +Long press in a text entry field to add a cloze deletion around the selected text, or an empty cloze deletion if there is no selected text. + +When you've finished typing in the content of a note, tap the tick icon in the app bar at the top to add it to your collection. Alternatively, if you want to go back to what you were doing without saving, you can tap the app icon, or use the hardware back button. diff --git a/src/advanced-features/advanced-statistics.md b/src/advanced-features/advanced-statistics.md new file mode 100644 index 0000000..6ca1e8c --- /dev/null +++ b/src/advanced-features/advanced-statistics.md @@ -0,0 +1,29 @@ +# Advanced Statistics + +If Advanced Statistics are enabled, it changes the **Forecast** graph so that it shows the estimated number of reviews that will be due on a given day in the future taking into account future reviews, learning new cards and failing cards. The bars and the left axis show the number of cards due on each day if you study all cards each day, while the line and the right axis show the number of unseen (shown as **learn**), young and mature cards your deck or collection will consist of if you study all cards each day. The forecast graph does count reviews that are currently overdue. It assumes that the overdue cards will be reviewed according to the **maximum reviews/day** deck option. + +Advanced Statistics can be enabled in `Settings -> Advanced -> Advanced Statistics` (in plugin section). + +The outcome of future reviewing, learning or failing cards affects reviews after that future review. To take this into account, the probability of each outcome is computed from the review log. Then the outcome is randomly chosen, such that an outcome which is more likely according to the review log is more likely to be chosen than an outcome which is less likely according to the review log. The settings all affect how the effect of the outcome of future reviews on subsequent reviews is taken into account. + +### Compute first n days, simulate remainder +If this setting is set to a number greater than 0, instead of randomly choosing an outcome, each possible outcome is taken into account in the simulation, together with its probability. The probability is taken into account for the graph and for future reviews in which it results, which also affect the graph. +One review has a couple of possible outcomes (say 4), which all result in a review. That review also has a couple of possible outcomes and so on. If many reviews are simulated this way, many reviews (4 x 4 x 4 x ... ) have to be taken into account which increases the time it takes to compose the graph. +Therefore, for reviews later than n days from now are simulated by randomly choosing an outcome. + +In summary, higher n gives a more accurate graph, but it takes more time to compose the graph. + +### Precision of computation + +Reviews which occur with a probability smaller than 100% minus the configured precision of the computation are simulated by randomly choosing an outcome rather than taking into account each possible outcome. This setting is only applicable if the first n days are computed. +If Advanced Statistics are disabled, the **Forecast** graph shows the estimated number of reviews that will be due on a given day in the future if you do not review cards, learn no new cards and fail no cards. + +In summary, higher precision gives a more accurate graph, but it takes more time to compose the graph. + +### Number of iterations of the simulation +Composes the graph several times and then displays the average of these graphs. +Each time the graph is composed, another outcome might be randomly chosen. If we average many outcomes which are randomly chosen taking into account the probabilities from the review log, the average outcome will likely be close to the average of the probabilities from the review log. +If we average many graphs, the average graph will likely be close to the graph which is generated by taking into account all possible outcomes. +If the number of graphs which are averaged is not too high, it will be faster than taking into account all possible outcomes. + +In summary, a higher number of iterations gives a more accurate graph, but it takes more time to compose the graph. diff --git a/src/advanced-features/custom-fonts.md b/src/advanced-features/custom-fonts.md new file mode 100644 index 0000000..3b41b43 --- /dev/null +++ b/src/advanced-features/custom-fonts.md @@ -0,0 +1,15 @@ +# Custom Fonts + +AnkiDroid allows you to use non-system fonts on your cards. To set them up properly, it is strongly recommended to use the official method that is used by Anki Desktop. Please see [the corresponding section in the desktop manual](https://docs.ankiweb.net/templates/styling.html#installing-fonts) for more information. + +Alternatively, you can create a new subfolder **fonts** in the main AnkiDroid directory (i.e. the folder which contains the **backups** subfolder, specified under `Settings > Advanced > AnkiDroid directory)`, copy a compatible font file (i.e. .ttf) there, and then set this as the default font under `Settings > Fonts > Default font`. + +**Note:** this method will change the default font for **all** of your cards, whereas the official method can be more specific. Also, if you sync with AnkiWeb, using this method will lead to cards being displayed differently on different devices. + +Only fonts in the ttf format are officially supported in Anki/AnkiDroid; the [Google Noto](https://fonts.google.com/noto) font set is highly recommended for all languages, and some other free fonts can be found [here](https://github.com/ankidroid/Anki-Android/wiki/Freely-distributable-fonts). + +Please note that AnkiDroid has to load the entire font into memory in order to use it, and fonts for Asian languages can be quite large. If you have an older device and notice AnkiDroid crashing frequently after installing a font, you may have exceeded your device's memory limits. For Google Noto, it's not recommended to use the combined CJK font, rather get the individual languages [separately from here](https://github.com/googlei18n/noto-cjk). + +>**Note 1**: If you have **Fetch media on sync** disabled, you may need to manually copy the font file from Anki Desktop to your AnkiDroid/collection.media folder. + +>**Note 2**: If you can't get your font to work after following the steps in here and the Anki Desktop manual, please refer to the FAQ for detailed steps on how to debug font issues. diff --git a/src/advanced-features/customizing-card-layout.md b/src/advanced-features/customizing-card-layout.md new file mode 100644 index 0000000..990365d --- /dev/null +++ b/src/advanced-features/customizing-card-layout.md @@ -0,0 +1,6 @@ +# Custom Card Layout +The layout of flashcards is completely customizable, although this is an advanced topic with a fairly steep learning curve, and you will probably find it a lot more convenient to do the customization with [Anki Desktop](../anki-desktop.md). + +The [card templates section](https://docs.ankiweb.net/templates/intro.html) of the Anki Desktop manual has detailed instructions on how to edit note types, and most of the actions discussed there are also available from AnkiDroid by tapping **cards** at the bottom of the note editor, or choosing the **manage note types** option in the deck picker. Since detailed information on customizing card layouts is available in the Anki desktop manual, it will not be repeated here. + +There is an [advanced formatting page](https://github.com/ankidroid/Anki-Android/wiki/Advanced-formatting) on the AnkiDroid wiki with various hints on how you can get the most out of your card formatting, and we encourage you to read it, and edit it freely if you have any tips that you'd like to share with the community. diff --git a/src/advanced-features/intro.md b/src/advanced-features/intro.md new file mode 100644 index 0000000..ccc31f6 --- /dev/null +++ b/src/advanced-features/intro.md @@ -0,0 +1,10 @@ +# Advanced Features + +- [MathJax Support](mathjax.md) +- [Reverse Cards](reverse-cards.md) +- [Custom Fonts](custom-fonts.md) +- [Custom Card Layout](customizing-card-layout.md) +- [Type in the answer feature](type-in-answer.md) +- [Advanced Statistics](advanced-statistics.md) +- [Reminders](reminders.md) +- [Automatic Language Selection](set-language-hint.md) \ No newline at end of file diff --git a/src/advanced-features/mathjax.md b/src/advanced-features/mathjax.md new file mode 100644 index 0000000..d57f2a0 --- /dev/null +++ b/src/advanced-features/mathjax.md @@ -0,0 +1,14 @@ +# MathJax Support +Mathjax is a modern typesetting library for math and chemistry. AnkiDroid supports Mathjax cards out of the box. Mathjax is configured to expect TeX formatting, with `\(` and `\)` delimiting inline equations and `\[` and `\]` for display equations. + +To try it out, enter the following into a field: + +``` +\(\sqrt{x}\) +``` + +and preview the card. + +For more details, see [Mathjax Support](https://docs.ankiweb.net/math.html#mathjax) in the Anki Manual. + +[Previous workarounds](https://www.reddit.com/r/Anki/comments/ar7lxd/how_to_load_mathjax_color_extension_on_anki/egm6u5j) are no longer necessary as of AnkiDroid 2.9. diff --git a/src/advanced-features/reminders.md b/src/advanced-features/reminders.md new file mode 100644 index 0000000..cbf3f68 --- /dev/null +++ b/src/advanced-features/reminders.md @@ -0,0 +1,7 @@ +# Reminders +AnkiDroid can remind you to devote some time to reviewing cards every day at a specific time via Android's notification framework. +You can configure reminders for each options group independently. +To configure a notification go to Deck options > Reminders, then tick the checkbox and select the time you want to be notified at. +To stop receiving notifications go to Deck options > Reminders and unmark the checkbox. + +Notifications only work for top level decks. Please let us know if you want us to add notifications for subdecks too. diff --git a/src/advanced-features/reverse-cards.md b/src/advanced-features/reverse-cards.md new file mode 100644 index 0000000..8172c4d --- /dev/null +++ b/src/advanced-features/reverse-cards.md @@ -0,0 +1,11 @@ +# Reverse Cards + +The Anki system has [built-in note types which allow you to review cards in both directions](https://docs.ankiweb.net/getting-started.html#note-types). +When [creating new material](../adding-notes.md) in AnkiDroid, you should choose one of these note types, such as **Basic (and reversed card)**, which will automatically generate a reverse card for you. + +![ReverseNoteType](../img/ReverseNoteType.png) + +If you used the wrong note type when adding your material, you can change the note type via the [edit note screen](../editing-notes.md), or you can change the note type for multiple cards at once using the browser in Anki Desktop. +To do this, follow the instructions in the [syncing with Anki Desktop section](../anki-desktop.md), then in Anki Desktop open the browser, select the cards you want to change, then choose **Change note type** from the menu. + +Alternatively, if your cards are using a custom card layout which doesn't include a reverse card, you can edit the note type to include a reverse card by following the instructions in the [reverse cards section](https://docs.ankiweb.net/templates/generation.html#reverse-cards) of the Anki Desktop user manual. While less convenient than using Anki Desktop, it is possible to edit the note type from directly within AnkiDroid as well; see the [custom card layout section](../advanced-features/customizing-card-layout.md) for more on this. diff --git a/src/advanced-features/set-language-hint.md b/src/advanced-features/set-language-hint.md new file mode 100644 index 0000000..34b6b59 --- /dev/null +++ b/src/advanced-features/set-language-hint.md @@ -0,0 +1,5 @@ +# Automatic Language Selection +AnkiDroid has an in Automatic Language Selection feature in the Note Editor starting with AnkiDroid 2.13. This feature allows you to define a default language to be used in your keyboard for a field in a note type. + + +For example, if you have Russian and English note fields, and your keyboard supports the setImeHintLocales Android API, the keyboard layout will switch to Russian in the first field and back to English in the second automatically when the fields get focus. [Checkout video reference for demonstration](https://www.youtube.com/watch?v=JrxDjTrRhBE) diff --git a/src/advanced-features/type-in-answer.md b/src/advanced-features/type-in-answer.md new file mode 100644 index 0000000..62cd717 --- /dev/null +++ b/src/advanced-features/type-in-answer.md @@ -0,0 +1,25 @@ +# Type in the answer feature + +AnkiDroid allows you to type in the correct answer and then compare it to the right answer. You have to set this up with Anki desktop, as described in the [Anki Desktop manual](https://docs.ankiweb.net/templates/fields.html#checking-your-answer). + +Anki desktop replaces the **{{type:NN}}** field on the front of a card with an input box in the card. On AnkiDroid it is replaced with a **......** prompt instead, and a text input box is shown at the bottom. The comparison between typed text and the correct text is shown on the answer side in place of the **{{type:NN}}** field there, like on Anki desktop. + +The text input box and the soft keyboard can be hidden by ticking **Disable typing in answer** in the preferences. + +Even with typing disabled, the correct answer is shown on the answer side. This is done on purpose; otherwise the correct answer might not be shown at all. + +To hide the comparison (e.g. because the correct answer is shown anyway), the HTML id **typeans** can be used. +Add following to the [card styling](https://docs.ankiweb.net/templates/styling.html#card-styling) using Anki Desktop. +```css +.mobile #typeans { + display: none; +} +``` + +The type answer prompt and the comparison have more classes that can be used to change the way they are displayed. Some of these are the same as on Anki Desktop, some are specific to AnkiDroid. + +The comparison uses three classes, typeGood, typeBad and typeMissed to add green, red and gray background to the typing comparison. These three classes are used on Anki desktop as well. + +The **......** prompt has the class **typePrompt**. + +When typing is set to off in the preferences, the class **typeOff** is added to the prompt on the question side, and to the div element containing the comparison on the answer side. This class can be used to show the type prompt or to hide the typing comparison in this case. diff --git a/src/alpha-testing.md b/src/alpha-testing.md new file mode 100644 index 0000000..442dc1c --- /dev/null +++ b/src/alpha-testing.md @@ -0,0 +1,6 @@ +# Alpha testing + +If you are more adventurous, you can also become an alpha tester, by joining the [alpha testers group](https://groups.google.com/forum/#!forum/ankidroidalphatesters) +in addition to performing the above steps for beta testing. + + diff --git a/src/anki-desktop.md b/src/anki-desktop.md new file mode 100644 index 0000000..1d61aca --- /dev/null +++ b/src/anki-desktop.md @@ -0,0 +1,33 @@ +# Using Anki Desktop with AnkiDroid + + + +Anki has a free cloud synchronization service called AnkiWeb that makes it easy to keep your card decks in sync between mobile devices and your computer. If you cannot use sync for some reason, it's also possible to use USB, though this method is more laborious. + +Note that AnkiDroid is not affiliated with Anki Desktop or AnkiWeb. AnkiDroid is based on Anki Desktop but it is developed by an entirely separate community of volunteers. + +![AnkiDesktop.png](img/AnkiDesktop.png) + +## Via Cloud Sync +Before you can use AnkiWeb, you'll first need to create an account by visiting [https://ankiweb.net](https://ankiweb.net) and clicking the **Sign Up** button. If you have used AnkiWeb in the past, you can skip this step. After signing up, see the corresponding instructions below, depending on whether you are trying to get your existing decks into AnkiDroid or out of AnkiDroid. + +### Sync existing decks into a new AnkiDroid install +In this scenario you have some existing Anki decks that you want to copy into a new install of AnkiDroid by syncing with AnkiWeb. Open the Anki client with your existing decks (usually this would be Anki desktop, but it could also mean a version of AnkiDroid you have been using on another device), and click the synchronization button (which has two arrows in a circle) at the top right of the deck list. + +If you have never used AnkiWeb before you will need to enter your credentials if prompted, and then press the **Upload to AnkiWeb** button to confirm overwriting the empty collection on AnkiWeb with your existing decks in Anki. Anki will upload all your cards, images and audio to AnkiWeb. If you have a lot of media, this may take some time. + +Once the synchronization has completed, open AnkiDroid in the device that you are trying to copy the existing decks into, and tap the **Sync** button in the app bar at the top of the main [deck list](deck-picker.md). +After entering your AnkiWeb credentials, AnkiDroid will download all your cards and media, and remember your login information for next time. + +Note that if you have any existing material in AnkiDroid before attempting to sync, you may be shown a message asking you to choose to either download from AnkiWeb, or upload to AnkiWeb. If you are happy to lose the cards in AnkiDroid then simply choose **Download**. If you need to merge the existing cards with AnkiDroid then you should see the [resolving conflicts](ankiweb-conflicts.md#dealing-with-merge-conflicts-on-ankiweb) section before continuing. + +After the first synchronization has completed, you can click the sync button again any time you wish to synchronize your changes to the cloud. Only changes made since the previous sync will be sent, so subsequent syncs are a lot faster. + +If you add some new cards on the desktop computer and want to sync them to AnkiDroid, you'd repeat the same basic process: sync on desktop (or close the program, as it syncs automatically on close by default), and then tap the sync button on AnkiDroid. + +### Sync from AnkiDroid to Computer +The process of syncing from AnkiDroid to computer is essentially the same as syncing from computer to AnkiDroid, but in reverse. + +From the [deck list](deck-picker.md), tap the sync button in the top right (it has two arrows in a circle). If it's your first time using AnkiWeb, you may need to enter your login credentials, and then press the "upload" button to upload your AnkiDroid collection to AnkiWeb. + +Once the synchronization has completed, open Anki Desktop on your computer and press the sync button there (with two arrows in a circle), and Anki will download your collection. diff --git a/src/ankiweb-conflicts.md b/src/ankiweb-conflicts.md new file mode 100644 index 0000000..fecc1c8 --- /dev/null +++ b/src/ankiweb-conflicts.md @@ -0,0 +1,45 @@ +# Dealing with merge conflicts on AnkiWeb +Although it should not happen often, occasionally you may end up in the position where your cards on AnkiDroid can not be automatically merged with the cards on AnkiWeb. In this case it's necessary to choose to either upload to or download from AnkiWeb, which would overwrite any changes on the other side. + +If you have new cards on both sides which you want to keep, before syncing you can [export a deck package](exporting.md) for each deck containing new cards from AnkiDroid, then when you do the sync choose **download** to download from AnkiWeb. After the synchronization has completed, you can import the decks you previously exported from AnkiDroid, as per the [importing section](importing/importing-anki-files.md). + +## Via USB + +If you don't have regular internet access, it's still possible to copy decks back and forth to your device, by using USB. + +The USB method works by importing or exporting all your decks at once. This means that unlike syncing via AnkiWeb, you can't make changes from two locations at once and then merge them. Instead, if you wish to add cards on the desktop, you need to make sure you export the latest version of your collection from your mobile device first, or you'll end up losing any reviews done on the mobile device. + +Thus the workflow you would typically use is to export your collection from your mobile device and import it into the desktop, make modifications on the desktop, and then export your collection and import it back into your mobile device. + +AnkiDroid can't directly import text files. If you wish to do that, you'll need to do that with the desktop program, and then import your collection into AnkiDroid. + +### Copy all decks from Anki Desktop to AnkiDroid via USB + +On your computer: + 1. Open the desktop program. + 2. Choose File>Export from the menu. + 3. Click the **Export...** button. Make sure to leave **all decks** selected, as it's not possible to import individual decks into AnkiDroid. **Include scheduling information** must also remain checked. + 4. Anki will automatically create a collection.apkg on your desktop. If the file is named something else, please see the previous step again. + 5. Connect your Android device to your computer via the USB cable. + 6. Open the file explorer on your computer and view the contents of your Android device. + 7. Locate the AnkiDroid folder. + 8. Drag the collection.apkg file from your desktop into this AnkiDroid folder. + +Then in AnkiDroid: + 1. From the main decks screen, tap **Import file** from the menu + 2. Tap on **Collection** and then confirm + +Once complete, the decks on your device will have been replaced with the decks from your desktop. See the section on +[importing apkg files](importing/importing-anki-files.md) for more help with importing. + +### Copy all decks from AnkiDroid to Anki Desktop via USB + +The process to copy your decks from AnkiDroid to Anki Desktop is essentially the same as above, but in reverse. + 1. Start with your device disconnected from USB + 2. Choose **Export collection** from the main menu in the Deck Screen + 3. Ensure **Include scheduling information** remains checked and press **OK** + 4. Connect device to computer using USB + 5. Copy the **collection.apkg** from the path specified in the message to the desktop on your computer + 6. Double click on the file to import into Anki Desktop + +See the [exporting section](exporting.md) below for more detailed information on exporting from AnkiDroid. diff --git a/src/backups.md b/src/backups.md new file mode 100644 index 0000000..65880f0 --- /dev/null +++ b/src/backups.md @@ -0,0 +1,8 @@ +# Automatic Backups + +AnkiDroid will automatically create backups of your collection for you. The backups include all your cards and statistics, but do not include sounds or images. + +The backup is taken in the background when you first start the app. A backup will only happen if more than 5 hours has elapsed since the last time a backup was created. +By default, AnkiDroid will store the last 8 backups; this number can be changed in the main settings. + +You can restore a backup by choosing the *restore from backup* option from the main menu of the [decks screen](deck-picker.md). diff --git a/src/beta-testing.md b/src/beta-testing.md new file mode 100644 index 0000000..9788c03 --- /dev/null +++ b/src/beta-testing.md @@ -0,0 +1,13 @@ +# Beta testing +If you want to try out the latest features in AnkiDroid, you can sign up for the beta testing program as follows: + + 1. Visit the [Google Play Beta page](https://play.google.com/apps/testing/com.ichi2.anki) + 2. Click **Become a beta tester** + +After following these steps, the latest beta version will automatically be installed by Google Play in the same way as ordinary updates. + +If you are more adventurous, you can also become an alpha tester, by joining the [alpha testers group](https://groups.google.com/g/ankidroidalphatesters) in addition to performing the above steps for beta testing. + +Please submit any bugs you find in these development versions to the AnkiDroid issue tracker, as per the [main help page](help.md). + +If you wish to leave the testing program at any time, simply visit the [Google Play Beta page](https://play.google.com/apps/testing/com.ichi2.anki) and click **Leave the test**. diff --git a/src/browser.md b/src/browser.md new file mode 100644 index 0000000..bf0db73 --- /dev/null +++ b/src/browser.md @@ -0,0 +1,54 @@ +# Finding/Searching/Browsing + + + +You can search for or browse cards by tapping the **Card browser** button from the [navigation drawer](drawer.md). + +![img/6-browser.png](img/6-browser.png) + +The browser screen starts by displaying all the cards in the currently selected deck. You can search for cards in the selected deck by tapping the magnifying glass icon in the top. You can change the selected deck (or change to all decks) by choosing the deck from the dropdown list on the top left. + +By default, the first column in the browser gives the text which will be shown on the question (i.e. front side) of the flashcard, and the second column shows the text from the answer (i.e. the back side) of the flashcard. + +The first column can also be configured to show the [sort field](https://docs.ankiweb.net/editing.html#customizing-fields) for a more compact display. The second column can be configured to show many different parameters by tapping the drop down menu in the column heading. + +Note that the content of the columns is dynamically calculated as your scroll through the list of the cards. + +From the search results, you can tap on a card to edit it (see the [edit note section](editing-notes.md) above), or long-tapping on it will show a menu allowing you to perform the following actions: + +#### Mark / unmark note +Add / remove the **marked** tag from the note. Cards with a marked note are highlighted in purple. + +#### Flag card +Change or remove the color coded **flag** on the card. Cards with a flag are highlighted in the flags color. + +#### Suspend / unsuspend card +Suspended cards are highlighted in yellow, and are not shown during review. + +#### Delete note +Delete the note of the currently selected card, and all cards belonging to that note. This action cannot be undone without [restoring from backup](backups.md). + +#### Preview +Render the currently selected card so that you can see what it looks like in the reviewer. + +#### Select multiple cards +Long-tapping on a single card will select the single card. While that card is selected, if you long-tap on another card on your screen, then all of the cards between the first selected card and the last card will be selected. This allows for actions to be performed on multiple cards at once. + +## Searching +AnkiDroid supports all the search strings that the desktop version of Anki does, allowing you to perform quite complex searches. Some examples: + +#### tag:marked +show cards that with the tag **marked** + +#### is:due +show only cards that are waiting for review + +#### front:rabbit +show only cards where the front field is exactly **rabbit** + +#### flag:1 +show only cards marked with a red flag + +For a full list of the possibilities, please see the section in the [desktop manual](https://docs.ankiweb.net/searching.html). + +Alternatively, some more commonly used filters (marked, suspended, and tagged cards) can be quickly applied without manually typing them by choosing them from the overflow menu. You can also save and recall common search queries from the menu. diff --git a/src/changelog.md b/src/changelog.md new file mode 100644 index 0000000..42db7af --- /dev/null +++ b/src/changelog.md @@ -0,0 +1,19 @@ +# AnkiDroid Changelog + +- [Version 2.15](/changelog/v2.15.html) +- [Version 2.14](/changelog/v2.14.html) +- [Version 2.13](/changelog/v2.13.html) +- [Version 2.12](/changelog/v2.12.html) +- [Version 2.11](/changelog/v2.11.html) +- [Version 2.10](/changelog/v2.10.html) +- [Version 2.9](/changelog/v2.9.html) +- [Version 2.8](/changelog/v2.8.html) +- [Version 2.7](/changelog/v2.7.html) +- [Version 2.6](/changelog/v2.6.html) +- [Version 2.5](/changelog/v2.5.html) +- [Version 2.4](/changelog/v2.4.html) +- [Version 2.3](/changelog/v2.3.html) +- [Version 2.2](/changelog/v2.2.html) +- [Version 2.1](/changelog/v2.1.html) +- [Version 2.0](/changelog/v2.0.html) +- [Version 0.1-to-1.1.3](/changelog/v0.1-to-1.1.3.html) \ No newline at end of file diff --git a/src/changelog/intro.md b/src/changelog/intro.md new file mode 100644 index 0000000..e69de29 diff --git a/src/changelog/v0.1-to-1.1.3.md b/src/changelog/v0.1-to-1.1.3.md new file mode 100644 index 0000000..653f93b --- /dev/null +++ b/src/changelog/v0.1-to-1.1.3.md @@ -0,0 +1,5 @@ +## Version 0.1 to 1.1.3 +AnkiDroid has continuously evolved collectively as an open source project, with the first version released to the Google Market on [June 28 2009](http://nicolas-raoul.blogspot.jp/2009/06/just-published-ankidroid-on-market.html). + +Version 1.1.3 was the last 1.x version (released on 26th June 2012), before the incompatible AnkiDroid v2.0 was released, +essentially rewritten from scratch to be compatible with the new Anki Desktop v2.0. diff --git a/src/changelog/v2.0.md b/src/changelog/v2.0.md new file mode 100644 index 0000000..2be2e04 --- /dev/null +++ b/src/changelog/v2.0.md @@ -0,0 +1,43 @@ +## Version 2.0.4 (2014-02-03) + * Fix issue with typing answers + * Default font now overrides card font + * Fixed audio playback image being covered by text on Android 2.3 + * Fixed reviewer crash when language set to Romanian + * Translation fixes + +## Version 2.0.2 (2013-12-15) + * Fixed lots of crashes + * Tablet UI fixes + * Fixed new card ordering issues + * Card appearance now matches desktop Anki. (Centering cards is off by default but can be re-enabled) + * Option groups can now be changed in AnkiDroid + * Clear error message when using a bad template + * Fixed timeboxing notifications + * Properly scale images + * Better custom font handling + * More settings (next day starts at, timeboxing value, etc.) + * Changing AnkiDroid interface language now works. + * Fixed import/shared deck download issues ("not a valid apkg file") + * Fixed invisible text on Motorola devices + * Focus on answer when revealed + * Filtered decks are now blue in deck list + * Removed unused circle button in note editor + +## Version 2.0.1 (2013-02-06) + * Upgrade wizard + * Fix importing apkgs + * Fix media syncing + +## Version 2.0 (2013-01-03) + * complete revision + * libanki2.0 scheduling + * new learning mode + * new layout + * merge syncing possible now + * better statistics + * decks are now saved in a single collection + * options are shareable now + * tablet layout + * tons of performance improvements + * card import function + * collection can be saved on internal memory diff --git a/src/changelog/v2.1.md b/src/changelog/v2.1.md new file mode 100644 index 0000000..cb70cc7 --- /dev/null +++ b/src/changelog/v2.1.md @@ -0,0 +1,18 @@ +## Version 2.1.3 (2014-04-05) + * Create new notes in correct deck + * TTS fixes + +## Version 2.1 (2014-03-27) + * Lots of Bug Fixes + * New custom study option with improved tag selection + * New preview card feature in note editor (experimental) + * New override font preference in addition to default font + * New "Kanji Info" feature (enabled in preferences->reviewing->Kanji Info) + * Improve Aedict integration + * Support for Samsung Multi-Window + * Fix Some TTS Issues + * Updated Translations + * Remove unused media check when deleting decks + * Significantly increase speed for reducing filtered decks + * Remove upgrade wizard + \ No newline at end of file diff --git a/src/changelog/v2.10.md b/src/changelog/v2.10.md new file mode 100644 index 0000000..a4ac3ec --- /dev/null +++ b/src/changelog/v2.10.md @@ -0,0 +1,68 @@ +## Version 2.10.4 (2020-05-31) +* Workaround expired AnkiWeb SSL Root certificate +* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/22?closed=1) + +## Version 2.10.3 (2020-05-29) +* Fix crash on no permissions on Card Browser system text menu entry +* Fix crash in widget if external storage unmounts +* Fix crash on device reboot if no permissions +* Fix crash if deck picker background image too large +* Fix crash in tags dialog +* Fix bad data generated for null objects (Anki compatibility) +* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/21?closed=1) + +## Version 2.10.2 (2020-05-14) +* Fix type answer cards not rendering correctly +* Fix type answer card template creation on non-English new installs +* Fix frequent full sync caused by incorrect learning card counts +* Fix crash importing into fresh install with no storage permission + +## Version 2.10.1 (2020-05-13) +* Updated all translations from crowdin translators +* Fix crash note editor on rapid back button +* Fix crash from incorrect Thai translation + +## Version 2.10 (2020-05-12) +* Add welcome dialog explaining need for storage permission +* Add support for Flags on cards (including flagging by gesture) +* Add ability to set background image in Deck Picker +* Add localization of standard templates created in fresh install +* Add support for card javascript to reload current card programmatically +* Add support for restricted learning / classroom devices +* Add preference to disable "Extended Text UI" full-screen editor +* Add CSS style capability to heavy checkmark and down arrow in card +* Add display of current interval on reschedule dialog +* Add support for card javascript to answer cards programmatically +* Add ability to toggle sticky field in field editor +* Improve deck list newline, style, script tag handling in deck descriptions +* Improve whiteboard on/off state handling, especially between day/night mode +* Improve multi-selection options in CardBrowser +* Improve performance (systematic optimization process, lots of improvements!) +* Improve handling of erroneous notes (missing fields, improper clozes) +* Improve user messaging on network connection failures +* Improve counting of suspended/buried cards in advanced statistics +* Improve v2 scheduler compatibility with Anki ecosystem +* Improve handling / detection of full sync need +* Improve Anki compatibility by allowing more field/model/deck name characters +* Improve deck list estimated review times with human scale times +* Fix text scaling bug in card browser +* Fix crash in export while using v2 scheduler +* Fix Custom Tabs crash with non-default system web browser +* Fix issues with import of packages with long Unicode names +* Fix incorrect intervals on lapsed filtered v2 scheduler cards +* Fix multimedia editor save/cancel behavior +* Fix incorrect button/gesture availability while existing task is still active +* Fix type answer crash on invalid characters +* Fix cloze references not being recognized in all fields +* Fix invalid ability to change deck to a filtered deck +* Fix crashes on adding invalid images, audios, and videos +* Fix CardBrowser crash after deleting card +* Fix crash and help user if no browser detected +* Fix Reviewer crash if card not available +* Fix crash / improve import of pasted decks +* Fix clicking hint field blocks key input in Reviewer +* Fix Previewer forgetting which card to show on device rotation +* Fix Mathjax/cloze interactions +* Fix vertical alignment of touch area in full-screen review +* Fix handling of ':::' in deck names +* Fix incorrect display of HTML comments in card browser diff --git a/src/changelog/v2.11.md b/src/changelog/v2.11.md new file mode 100644 index 0000000..a2ae936 --- /dev/null +++ b/src/changelog/v2.11.md @@ -0,0 +1,55 @@ +## Version 2.11.3 (2020-06-17) +* Fix out-of-memory errors when importing very large decks +* Fix incorrect out-of-space message on import in Android 4 +* Fix crash if card viewer closed quickly after view +* Fix unzip fail on .apkg files >2GB +* Fix crash on edit note in browser multi-select + +## Version 2.11.2 (2020-06-10) +* Add santali language +* Fix Hebrew, Indonesian, Tagalog languages +* Improve error reporting around apkg import failures +* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/24?closed=1) + +## Version 2.11.1 (2020-06-08) +* Fix crash in Card Browser multi-select mode +* Fix Custom Steps interval dialog space entry issue +* Fix flags don't export with deck +* Fix AnkiDroid API doesn't handle null model id (Anki Compatibility workaround) +* Fix translation crash in sync dialog in Azerbaijani +* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/23?closed=1) + +## Version 2.11.0 (2020-06-05) +* Android minimum supported version is now 4.1 / Jelly Bean / API16 (AnkiWeb Compatibility) +* Change sibling burying should default to off (Anki Compatibility) +* Change learn cards do not go in filtered decks in v1 sched (Anki Compatibility) +* Add Browser Appearance screen, to edit Card Browser render format (Anki Compatibility) +* Add guidance in Note Editor if no cards will be generated despite full fields +* Add all translations from our crowdin.com translation site +* Add ability to decrease daily limit in custom study (Anki Compatibility) +* Add ability to block gesture handling when tapping hints in Reviewer +* Add create subdeck option in deck list long-press context menu +* Add edit note action in Card Browser multi-select mode +* Add ability to turn off 'Card Browser' system text context menu item +* Add nightMode CSS selector for card HTML (Anki Compatibility) +* Add ability to change just the case of a deck name +* Add page-up/page-down gestures +* Improve gesture handling in full-screen / immersive mode +* Improve handling of cloze deletion in TTS mode +* Improve Card Browser search from Android text selection menu +* Improve Card Browser with default hide of media filenames +* Improve Reviewer auto-advance by waiting for TTS to finish +* Improve transparent SVG display in night mode with white background +* Improve anki package import handling +* Improve AnkiWeb login form enter button handling +* Improve hardware back button handling in restore from backup +* Improve Reviewer display of un-rendered LaTeX +* Improve TTS / auto-answer combination, wait for TTS before advance +* Workaround Firefox open downloaded deck bug +* Workaround crash on Samsung devices with >500 deck reminders +* Fix card template editor mistakenly allowing add template on cloze type +* Fix language change preference +* Fix ability to unbury a deck in deck list +* Fix app bar item flicker during review +* Fix V2 scheduler learning card count after undo +* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/13?closed=1) diff --git a/src/changelog/v2.12.md b/src/changelog/v2.12.md new file mode 100644 index 0000000..40ec48b --- /dev/null +++ b/src/changelog/v2.12.md @@ -0,0 +1,23 @@ +## Version 2.12.1 (2020-07-21) +* Fix bug previewing edited notes after changing field count +* Fix crash previewing edited notes from dynamic decks +* Fix crash restarting app after a crash +* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/28?closed=1) + +## Version 2.12.0 (2020-07-18) +* Add Crop image feature +* Add Preview in note editor +* Add edit tags in reviewer +* Add volume buttons as gestures +* Add whiteboard pen color +* Add microphone tool bar in reviewer +* Add javascript API (check the Wiki!) +* Improve: app is 3MB smaller +* Fix: show whole tag in tags dialog +* Fix copy note copies tags too +* Fix data corruption canceling template edits +* performance and bug fixes everywhere! + +11 volunteers made hundreds of individual changes this release + +[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/18?closed=1) diff --git a/src/changelog/v2.13.md b/src/changelog/v2.13.md new file mode 100644 index 0000000..198f061 --- /dev/null +++ b/src/changelog/v2.13.md @@ -0,0 +1,84 @@ +## Version 2.13.5 (2020-10-03) +* Fix performance for fast (<1s) answers in review +* Add links to new Arabic help/manual translation +* Add back button handling to changelog display +* Add rate button to changelog +* Add warning message to handle future db upgrades +* Sync all translations from our volunteer translators (thanks everyone!) + +## Version 2.13.4 (2020-09-29) +* Fix crash showing TagsDialog +* Fix crash in gesture detection +* Improve import interrupted error message +* Fix scheduler counts after undo +* Fix Card Browser preview after sort +* Fix button display if answer animation incomplete +* Sync all translations + +## Version 2.13.3 (2020-09-23) +* Fix double-clicking answer buttons skipping cards +* Change missing media warning to twice-per-session not twice-per-deck +* Change answer button fade on open +* Updated all translations from volunteer crowdin.com site up to 20200923 + +## Version 2.13.2 (2020-09-19) +* Fix Crash rare on Card Browser exit +* Fix Crash Android 4.4 +* Fix Open Deck failures / improve related messaging +* Fix messaging for Xioami cloze workaround +* Move "set field language" after share on Note Editor context menu + +## Version 2.13.1 (2020-09-17) +* Add cloze via clipboard paste workaround on MIUI/Xiaomi devices +* Fix Navigation drawer respects safe display / disable animations preference +* Fix Reviewer buttons respect safe display / disable animations preference +* Fix Deck Picker bottom bar opacity +* Fix Error message about missing content on cards +* Fix crash selecting deck that disappears during sync + +## Version 2.13.0 (2020-09-15) +* Field tag (such as "{{Front}}") appearing in a note's field will be shown as-is in cards. +* Add Sync icon badge when changes are pending sync (can be disabled in options) +* Add Edit Note from card Preview while in Card Browser +* Add "Anki Card" to system context menu (like "Card Browser") - disabled by default +* Add Set keyboard language for specific fields in the note editor (example: one field Japanese, other field Portuguese for input). +* Add Keep keyboard open after adding a note +* Add Card properties available in JavaScript API +* Add JavaScript API versioning for scripts (basis for future plugins) +* Add Auto-Login when selecting saved user account +* Add Allow import of collection.anki21 files when under SchedV1 +* Add New screen for first-time users +* Add Button animations when answering cards +* Add Note Editor: Add shortcuts Ctrl+(Alt)+Shift+C to add a cloze. +* Fix Some cards in learning were not shown at the right time (Only if you undo/bury/suspend/reset/reschedule and the next card goes to learning mode) +* Fix Selected deck has translucent background if a deck picker background is set +* Fix Improved preview screens +* Fix Better accessibility in Deck Browser for partially sighted users +* Fix Improve visibility of "Add/Remove Option Group" +* Fix Improved messages for sync rate limiting error +* Fix Improved messages for reducing study limits +* Fix Improved messaging when collection is missing media +* Fix Improve feedback when accessing Debug Info +* Fix Add additional warnings to reschedule dialog +* Fix Whiteboard pen color can be disabled by pressing icon again +* Fix Ensure all menu items in the reviewer can be customized by "App Bar Buttons" setting +* Fix Scheduler discrepancy handling early interval on filtered decks +* Fix Exports work when cards are missing media +* Fix Crash due to logging. +* Fix Toasts used to show one more card than the number of card actually reviewed during the time box +* Fix Handle newlines properly in Note Editor Preview +* Fix Improve AnkiDroid opening animation +* Fix Show correct answer button when answering via Keyboard +* Fix "New Cards Added" Statistic +* Fix Crash when inserting a cloze when selecting text from right-to-left via keyboard +* Fix "Show Password" icon revealing saved password +* Fix Card browser still contains card after the app goes into background +* Fix Daily unbury occurs during sync if necessary +* Fix On big screen, buttons moved during loading +* Translators If some text change because of minor changes (typos) you won't have to translate it again +* Performance improvements (specifically: initial loading of large collection (lot of decks, note type, card type, fields, long templates...), card browser, deck picker startup, next card view, undo, cancelling tasks such as computing a list of card in browser) +* Dev: Massive dev workflow improvements and automated checks for our translations. +* Dev: Implement backend for CSV Importer +* Dev: Improve crash reporting on app startup +* Dev: Massive improvement in testing, especially around scheduler / card queue behavior +* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/27?closed=1) diff --git a/src/changelog/v2.14.md b/src/changelog/v2.14.md new file mode 100644 index 0000000..9071ad7 --- /dev/null +++ b/src/changelog/v2.14.md @@ -0,0 +1,91 @@ +## Version 2.14.6 (20210309) +* Reviewer: fix "my card is blank now with 2.14.5! help!" 😱 +* Reviewer: fix Android 8/8.1 review buttons disappear (finally?) + +## Version 2.14.5 (20210307) +* We really appreciate the [donations](https://opencollective.com/ankidroid), they paid for these fixes 🤝 +* NoteEditor: Android 11 users can crop! +* NoteEditor: Canceling crop twice won't delete your image +* DeckList: parent limits altered to match Desktop +* DeckList: current deck saved as correct type +* SchedulerV2: allow very small delays +* KNOWN ISSUE: [Android 8/8.1 answer buttons disappear](https://github.com/ankidroid/Anki-Android/issues/7369). Use gestures as workaround. +* Anyone with Android 8/8.1 that reproduces this and knows how to develop Android layouts? We'd love the help! + +## Version 2.14.4 (20210307) +* Re-released immediately as 2.14.5 after release script issue 🤷😅 + +## Version 2.14.3 (20210109) +* [The AnKing](https://www.youtube.com/c/TheAnKing) has graced us with a [new intro video](https://youtu.be/iuBU_OM9oAM)! 🤓 +* Still happily overwhelmed by the [donations](https://opencollective.com/ankidroid) 💪 +* Reviewer: Fix mark note keyboard shortcut +* NoteEditor: Fix to remove padding if removing formatting toolbar +* Previewer: Fix to show same card after edit +* Scheduler: Fix v1 scheduler completes deck when only learn cards due + +## Version 2.14.2 (20201202) +* Wow! We are humbled by the [donations](https://opencollective.com/ankidroid) 🤯 +* The resources are already going to contributors to improve the app! Thank you ❤️ +* Note Editor: Fix image crop not working first time +* Note Editor: Paste image at cursor not end +* Note Editor: Fix Ctrl+C opens preview +* Note Editor: Add menubar toggle to disable editing toolbar +* Home Screen: Fix Vivo device shortcut creation (again) +* Reviewer: Fix numeric keypad not working +* Note Editor: Fix cloze cards going to wrong deck +* Navigation Menu: Fix safe display app hang +* Preferences: Fix gestures menu translation / ordering issue +* Translations: thanks [translators!](https://crowdin.com/project/ankidroid/activity_stream) - you can help too! +* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/39?closed=1) + +## Version 2.14.1 (2020-11-23) +* Always free, always open source, but you may [donate if you like 😊](https://opencollective.com/ankidroid) +* Move sync button to right of action bar (vs search) +* Fix duplicate note detection +* Fix add deck shortcut on Vivo devices +* Fix non-translatable 'Card Info' strings +* Fix suspended card handling in filtered decks +* Sync translations from volunteers on our crowdin.com site (thank you!) +* Fix crash on mismatched WebView ABIs +* Fix crash invalid filename handling while pasting image +* Fix crash selecting cards in card browser +* Fix crash Android 8 in card browser +* Fix crash in undo labeling +* Fix crash reset password when system browser not exported +* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/38?closed=1) + +## Version 2.14.0 (2020-11-18) +* Enabled Donations - we ❤️ you, [now you can ❤️ us 😊](https://opencollective.com/ankidroid) +* New Screen: Card Info (from Card Browser or as a Reviewer App Bar Button) +* New Screen: Help - easy access to manual, many community pages/manuals, donation page, translations +* Home screen: Add deck shortcut +* Deck Options: SchedV2: Support setting "Hard Factor" +* Card Browser: Add deck filtering +* Card Browser: Filter By Flag +* Card Browser: Adding cards defaults to selected deck +* Card Browser: Many more keyboard shortcuts +* Card Browser: Display the number of cards deleted when deleting a note +* Card Browser: Better handling of deck searches containing wildcards +* Reviewer: Basic Android TV Support +* Reviewer: New Gesture: Abort Learning & Sync +* Reviewer: Support AnkiMobile 9-area gesture touch layout +* Reviewer: Improve "Empty Card" UX +* Reviewer: Keyboard shortcuts for flags (Ctrl+1...4) +* Note Editor: Editor Toolbar (& keyboard shortcuts) - hugely requested feature! +* Note Editor Toolbar: Apply Custom Commands (& keyboard shortcuts) +* Note Editor: Paste to Insert Image +* Note Editor: Made fields full-width +* Note Editor: Change Font Size for fields +* Note Editor: Expand/Collapse Fields +* Note Editor: Clear Field button +* Note Editor: Ctrl+Shift+Num to switch fields +* Note Editor: Improved image addition / naming +* Note Editor: Add preference to convert newline to HTML (or not) +* OS Integration: Default to "Anki Card" in system context menu vs "Card Browser" +* Libanki: Add FileUpload API +* Translations: Tagged screenshots on crowdin.com to help our translators +* Stability: Fix rare crashes (down to ~50/day total w/1.8million installs!) +* Performance: massive number of speedups +* Dev: Massively sped up AnkiDroid builds and improved code readability +* Totals: 345 code changes and hundreds of translations, made by volunteers, in 2 months +* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/30?closed=1) diff --git a/src/changelog/v2.15.md b/src/changelog/v2.15.md new file mode 100644 index 0000000..30f4c3e --- /dev/null +++ b/src/changelog/v2.15.md @@ -0,0 +1,83 @@ +## Version 2.15.6 (20210714) +* One more crash fix, no crashes shall be left unfixed! If we can help it. + +## Version 2.15.5 (20210713) +* [🤜🤛 Thank you! Your support makes the fixes happen!](https://opencollective.com/ankidroid) +* Full-screen navigation drawer drag is a preference, default off +* Floating Action Button ('+') labels are clickable again +* Fixed crash on first run post-install on tablets +* Fixed odd weekly breakdown stats chart behavior +* Fixed crash creating new deck from deck chooser +* [Updated translations](https://crowdin.com/project/ankidroid) (thank you translators!) +* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/47?closed=1) +* We are deep into development for v2.16 + Google Summer of Code, lots of new stuff coming +* Happy reviewing! + +## Version 2.15.4 (20210602) +* Saw one crash show up for 2.15.3: if you touched the 3 numbers + instead of the deck name on the deck list on phones, it would crash +* Temporarily revert full screen navigation drawer option to fix + +## Version 2.15.3 (20210602) +* [❤️ Thank you so much for the donations! We appreciate it ❤️](https://opencollective.com/ankidroid) +* Another batch of fixes stabilizing all the work done for AnkiDroid 2.15 +* Fix "Search All Decks" in Card Browser not searching +* Make new full screen navigation drawer open optional, default off +* Preserve edited search in card browser if navigation drawer opens +* Fix crash editing Tags dialog when switching back from another app +* Fix incorrect cloze help link +* Increase touchable area of undo icon +* Fix legacy / handebar template parsing +* Fix icon sizes for notifications and search +* Fix audio files incorrectly importing when attached +* Fix deck options "steps" showing up with lots of decimal places +* Update translations, add Kannada language +* Fix F-Droid app store publishing +* Correct navigation away from and back to Changelog +* Fix template parsing for "{{FrontSide}}" +* Fix stats tab view layout in RTL context +* Fix preview of cloze cards from note editor +* [Full changelog here](https://github.com/ankidroid/Anki-Android/milestone/45?closed=1) + + +## Version 2.15.2 (20210526) +* [❤️ Your donations here give us the time to work on the app, thank you! ❤️](https://opencollective.com/ankidroid) +* 🔥 Hot fixes for 2.15.0 issues (See below for 2.15.0 notes 👇 it was a huge release!) +* 2.15 should have no regressions now we think 🤞 +* That means we'll slow down the releases and these popups now, sorry + thank you +* Fix another API issue breaking card add from external apps +* Fix conditional template issue that caused blank cards for some +* Fix auto-advance ignoring "no advance" setting if card had audio +* Gracefully handle corrupt collections with invalid current decks selected +* Publish to Amazon App Store again (go get AnkiDroid on your Fire devices!) +* [Issue tracker milestone here](https://github.com/ankidroid/Anki-Android/milestone/44?closed=1) + + +## Version 2.15.1 (20210525) +* [❤️ Your donations funded this rapid set of fixes, enjoy! ❤️](https://opencollective.com/ankidroid) +* 🔥 Hot fixes for 2.15.0 issues (See below for 2.15.0 notes 👇 it was a huge release!) +* Do not auto-update users to scheduler v2. Yet. +* Fix crash on undo after deck delete +* Try harder to successfully paste images +* Reviewer performance fix - only load mathjax if needed +* Fixed compatibility issue for 2.15 collections on 2.14 +* Fixed API issue breaking card add from external apps +* Fresh language translations. See a bad translation? [You can fix it easily!](https://crowdin.com/project/ankidroid) +* [Detailed issue log](https://github.com/ankidroid/Anki-Android/milestone/43?closed=1) + +## Version 2.15.0 (20210524) +* [❤️ Your donations funded these features, enjoy! ❤️](https://opencollective.com/ankidroid) +* Thanks to [Google Summer of Code](https://github.com/ankidroid/Anki-Android/wiki/Google-Summer-of-Code-2021) students for a HUGE effort! +* Way too many changes to describe, but here are the highlights: +* New timezone code supported for sync with AnkiDesktop! +* Performance, stability improvements everywhere +* General UI improvements (accessibility, dark mode, design, more) +* Many new keyboard shortcuts and gesture actions +* Languages: Added Odia, Malayalam; big RTL support improvements! +* Reviewer: Javascript API: many new methods +* Improved account login, sync conflict, card template UI +* Tags and Decks dialogs have search! +* Whiteboard: erase, pen colors, stroke width +* NoteEditor: Mathjax 3, capitalize sentences setting +* Huge quality improvements all over codebase, helps future developers +* [🚧 Full 638 item changelog here! 🚧](https://github.com/ankidroid/Anki-Android/milestone/37?closed=1) diff --git a/src/changelog/v2.16.md b/src/changelog/v2.16.md new file mode 100644 index 0000000..65de867 --- /dev/null +++ b/src/changelog/v2.16.md @@ -0,0 +1,120 @@ +## Version 2.16.5 (20230906) +* Fix potential crash in our crash report system. See: Murphy's Law +* Fix incorrect default setting for analytics opt-in. Should be default off. + * Please check your setting if you want to make sure it is off + * Note1: our analytics is always anonymized and never shared as a first step + * Note2: the backend has been disabled for months, so there should be no exposure + * Still this was in error and counter to our strict opt-in ethos. We are deeply sorry. + * We will issue a future update shortly to opt everyone out as a precaution +* Thanks again for your patience waiting for 2.16 - we're on to 2.17 work already! +* We are humbled by the [donations](https://opencollective.com/ankidroid) 🤯 + +## Version 2.16.4 (20230827) +* Your dev team is still very excited to be able to release quick fixes for you again! +* Last big stability release for 2.16 series (see below for main 2.16 info) +* [❤️ We continue to be very thankful for your support](https://opencollective.com/ankidroid) +* Improved shortcut icons +* Fix card browser scroll position after editing a card +* Improve shared deck download handling +* Fix sound replay on cards +* Fix deck rebuild not updating UI +* Synced with [community language translations](https://crowdin.com/project/ankidroid) +* Development for 2.17 is already in progress! +* Are you still reading this? Good luck in your studies 🤓 + +## Version 2.16.3 (20230818) +* We meet Play Store requirements again, so we can release fixes quickly again! +* This is a stability release for the just-released 2.16 series (see below for 2.16 info) +* [🤜🤛 Thank you! Your support makes the fixes happen!](https://opencollective.com/ankidroid) +* Fix crash in certain cases adding images +* Fix crash exporting decks with '/' in deck name +* Fix crash displaying whiteboard menu +* Fix crash opening preferences after storage migration +* Remove camera permission (not needed for single photo use) +* Fix sync required indicator not disappearing +* Fix keyboard card answer highlighting whole card +* Fix keyboard card answer causing double-tap +* Fix incorrect deck highlight in tablet mode +* Fix display of saved card searches +* Fix inconsistent italics between Anki / AnkiDroid +* Add ability to map "reschedule" to a gesture +* Allow long preference titles to wrap +* Allow 3rd party cookies in webview to match Anki behavior +* Improve add shortcut icon +* Remove beolingus pronounce feature +* New community-provided translations from https://crowdin.com/project/ankidroid + +## Version 2.16.2 (20230726) +* You waited patiently nearly 3 years for this release! ⌛ Thank you +* What an effort! v2.16 contains 2,693 changes from 143 different authors 🤯 +* AnkiDroid is a labor of ❤️ with a mission to help the whole world learn more +* [you can ❤️ us back so we have more time to work on it](https://opencollective.com/ankidroid) +* “Why It Took So Long”: Scoped Storage replaces sdcard Storage + * Faster syncing and importing + * AnkiDroid no longer needs permission to access “All Files”! + * ...But you lose access to data on uninstall + * Sync, export/import, check media/database disabled during migration + * Manage Space Activity in System Settings + * Added “Backup Reminder” prompt + * [More info in our FAQ](https://github.com/ankidroid/Anki-Android/wiki/Storage-Migration-FAQ) +* A huge number of crash fixes, too many to mention +* “Auto” Day/Night theming to follow system, Android 13+ themed icon +* Added Anki “New Anki Backend option in advanced settings" - will be default in 2.17 + * We include anki 2.1.61 now, we’re fully up to date! + * Stats Heatmap + * Scheduler v3 support + * CSV Import, Text import + * Card Browser Searches + * Card Info and Deck Options from upstream +* New gesture manager, supports gamepad and bluetooth keyboard +* Translations, new languages, lots of fixes, [you can help!](https://crowdin.com/project/ankidroid/) +* Add support for hierarchical tags +* New Onboarding Screen +* New Preferences + * Icons & Better Categories + * Increase max possible backups to 99 + * Full screen navigation drawer option + * Add Preference for double-tap time interval + * “Insert Field” in Card Template Editor option + * Add "Allow sync on metered connections" option + * New “About” section + * “Developer Options” is now available +* Flags added: Pink, turquoise & purple flags as in Desktop +* Drawing Activity +* Custom Sync Server improvements + * Updated to match new Anki Desktop built-in sync server abilities + * Cleartext traffic permitted (it’s your server, use it how you like) +* Javascript AP changes: + * New bury & suspend card or note API + * New search API + * New text to speech API + * Enhanced reschedule API + * New Reset progress API + * Enable DOM storage so localStorage works +* Use language defined in ‘Language Hint’ when typing the answer +* Mathjax updated to current versions +* Double-tap floating ‘+’ Deck Picker button to add note +* Note Editor SVG, video, clipboard paste import support +* Card Previewer progress bar during preview +* Card Previewer: Show type-in answer in card previews +* Card Browser Support for Indeterminate tags when adding/removing tags +* Sync Account Add “Forgot Email” Button +* Add option to show all deck stats by default +* Add Note Gesture +* Ask to keep data when uninstalling (saves preferences too) +* Reviewer: Allow “TTS” to be moved to the Action Bar +* Note Editor: Allow the import of multiple files +* Import/Export + * Fixed many general problems with import/export + * Export just a deck + * Export just a note +* UI: Snackbars used where possible, and made much more pleasant +* UI: Matched the color of status, action and nav bar to background +* Card Browser: “Note” mode +* Whiteboard - Stylus Only Mode + +## Version 2.16.1 (20230726) +* Published internally, not generally released + +## Version 2.16.0 (20230726) +* Unpublished diff --git a/src/changelog/v2.2.md b/src/changelog/v2.2.md new file mode 100644 index 0000000..43ee4d4 --- /dev/null +++ b/src/changelog/v2.2.md @@ -0,0 +1,25 @@ +## Version 2.2.3 (2014-08-04) + * New media sync protocol + * Fix 2 bugs for opening links and resuming the app + +## Version 2.2 (2014-07-21) + * Redesign layout + * Add pictures and sounds to flashcards (experimental) + * Make second column in card browser configurable + * Make images on flashcards zoomable + * Improve preview feature and access via action bar + * Simplify menus and settings + * Make slow searches in card browser cancellable + * Improve adding/removing tags + * Fix "type in the answer" and cloze deletion features + * Fix whiteboard feature + * Restore backups from within the app + * Make volume duck on any background music when sounds played + * Make playing of sounds consistent with Desktop version + * Remove animations feature due to being buggy + * Improve speed of showing cards + * Remove duplicate check dialog when adding new flashcards + * Remove swap button when adding or editing flashcards + * Remove kanji info feature (will become optional plugin in the future) + * Make minimum Android version 2.1 + * Fix lots of bugs diff --git a/src/changelog/v2.3.md b/src/changelog/v2.3.md new file mode 100644 index 0000000..f907447 --- /dev/null +++ b/src/changelog/v2.3.md @@ -0,0 +1,23 @@ +## Version 2.3.2 (2014-11-06) + * Bug fixes: Sync, TTS, Remote images, Advanced editor, Export + * Note: This is the last version of AnkiDroid supported by AnkiWeb. Previous versions will not sync. + +## Version 2.3 (2014-10-27) + * Add new user manual + * Make statistics identical to Anki Desktop + * Fixes to media sync + * Fix bug where images were not showing + * Change layout of note editor + * Add new disable whiteboard option to reviewer and update icons + * Add full support for APKG export and import + * Add feature to email exported APKG + * Increase default number of backups and use APKG + * Make preview card accessible from card browser + * Make shared decks download with Android browser + * Add reset and reschedule feature in note editor + * Add a new notification system and icon + * Replace tutorial deck with new welcome screen + * Disable opening navigation drawer from reviewer when swipe is used + * Improve audio recording quality + * Support sticky fields when enabled in Anki Desktop + * Many other bug fixes diff --git a/src/changelog/v2.4.md b/src/changelog/v2.4.md new file mode 100644 index 0000000..8a259f9 --- /dev/null +++ b/src/changelog/v2.4.md @@ -0,0 +1,42 @@ +## Version 2.4.4 (2015-10-20) +* Fix playback of sound files with apostrophes in file name +* Fix new card siblings not being buried for the same day +* Fix media on cards when using the Hebrew Fix option +* Fix crashes related to "Relative overdueness" and make this sort order available on AnkiDroid +* When mixing new and review cards, make their rotation more consistent with desktop + +## Version 2.4.3 (2015-04-21) +* Fix "unknown field" bug +* Fix crash showing welcome screen on Android 2.3 +* Fix crash caused by widget +* Fix rare crash in browser +* Fix a couple of sync issues +* Fix crash starting AnkiDroid on a small number of devices +* Update translations + +## Version 2.4.2 (2015-03-18) +* Fix some bugs with cloze templates +* Fix a translation error + +## Version 2.4.1 (2015-03-15) +* Fix some bugs with filtered decks +* Improve importing of shared decks +* Open settings if AnkiDroid dir inaccessible +* Fix a bug with zooming +* Fix a bug where old card was still shown in reviewer after changing deck +* Fix some issues with cloze deletion +* Fix various crashes +* Update translations + +## Version 2.4 (2015-01-28) + * Move "preview" feature to browser + * Add ability to change note type of existing flashcards + * Add ability to view and delete card templates + * Fix TTS for most devices + * Support playback of videos (see supported formats [here](http://developer.android.com/guide/appendix/media-formats.html)) + * Improve rendering of second column in browser + * Improve detection of swipe gestures + * Increase number of languages in Glosbe translator + * Add support for Chromebooks + * New crash report system + * Bug fixes diff --git a/src/changelog/v2.5.md b/src/changelog/v2.5.md new file mode 100644 index 0000000..fb5b6ac --- /dev/null +++ b/src/changelog/v2.5.md @@ -0,0 +1,49 @@ +## Version 2.5.4 (2015-12-14) +* Fix background color in overflow menu of deck picker + +## Version 2.5.3 (2015-12-14) +* Fix floating action button (blue +) interfering with deck list on Android 2.3 +* Fix opening apkg files from Gmail +* Fix automatic playback of consecutive videos +* Add a new launch screen +* Improve behaviour surrounding the deck overview screen +* Multiple media files can now be added to one field in the note editor +* Don't include unused media files on export +* Undo behaviour is now consistent with the desktop client (can no longer undo note edits) +* Enhancements to sync canceling +* Minor performance enhancements, crash fixes, and UI tweaks + +## Version 2.5.2 (2015-12-04) +* Fix start-up crashes on Samsung devices running Android 4.2 +* Fix crash for new users on Android 6.0 +* Reverted to old typing method. The new method is now an option which is off by default. +* You can now click on the numbers in the right-most part of the deck list to open the deck overview screen +* Various fixes to transition animations and progress bars +* Add option to remove empty cards (previously only possible on desktop) +* Remove: Google Translate filter. In practice, this feature had no effect and is not required +* Remove: Google image search for multimedia card. The image search API has been discontinued by Google and no longer works + +## Version 2.5.1 (2015-12-01) +* Fix crash when loading deck list (could not open collection bug) +* Fix visible progress bar showing when answering card + +## Version 2.5 (2015-11-30) +* Redesign of user interface to use material design +* Add new dark theme +* Simplify the study process by bypassing deck overview screen +* Add ability to add, edit, delete note types +* Add setting to enable auto-sync and a Tasker intent to trigger sync +* Replace "instant add" feature with new API for 3rd party apps to add cards directly to AnkiDroid +* "Type in the answer" input box now built into the card html itself +* Make fullscreen-mode immersive and added setting to hide answer buttons when using gestures +* Add css class for customizing card background color when night mode is enabled +* Allow changing media volume from the deck picker +* Add ability to save and view common searches in the card browser +* Browser now shows full question and answer in the results by default +* Only show tags relevant to that deck when doing custom study by tag +* Fix some bugs in the widget +* Remove "simple interface" +* Remove support for Android version 2.1 and 2.2 (minimum is now 2.3.3) +* Add support for Android 6 Marshmallow +* Disable write-ahead-logging in sqlite database +* Many other bug fixes and small improvements diff --git a/src/changelog/v2.6.md b/src/changelog/v2.6.md new file mode 100644 index 0000000..b18fa6e --- /dev/null +++ b/src/changelog/v2.6.md @@ -0,0 +1,27 @@ +## Version 2.6.1 (2016-07-08) +* Add card cycling in previewer (similar to desktop client) +* Add option to hide 'minutes left' in reviewer +* Fix language from app setting not always being used +* Fix not being able to play back new sound recording +* Fix potential crash on Android 2.3 (Gingerbread) +* Improved use of horizontal space when resizing large images +* Minor adjustment to black theme colors + +## Version 2.6 (2016-06-14) +* Add two new themes (black, plain), selectable in preferences +* Make reviewer app bar icons customizable +* Split "hide / delete" menu in reviewer into "bury", "suspend", "delete note" +* Reviewer undo button now removes last stroke when whiteboard in use +* Add menu entry to change TTS language from reviewer +* Add more of the statistics available on the desktop client +* Add "advanced statistics" plugin (must be enabled in advanced settings) +* Add setting to configure custom sync server (advanced) +* Fix card templates created in AnkiDroid incorrectly using bold style +* Fix many importing issues (behavior now consistent with the desktop client) +* Fix long-tapping card in browser not always working +* Update sound playback button image +* Reduce size of whiteboard and gesture area for better interoperability with full screen +* Improve error messages with inaccessible collections +* Allow auto-play of HTML media elements (for templates that enable it) +* Significant updates to the content provider and API (for developers; see documentation) +* Many small bug fixes, improvements, theme adjustments, translation updates diff --git a/src/changelog/v2.7.md b/src/changelog/v2.7.md new file mode 100644 index 0000000..83db37f --- /dev/null +++ b/src/changelog/v2.7.md @@ -0,0 +1,10 @@ +## Version 2.7 (2016-10-16) +* Add pull-to-sync feature +* Add option to place answer buttons at the top +* Add widget to directly access "Add note" screen +* Fix issue with importing whole collections and restoring backups +* Fix deck import failing after the first successful one +* Fix cards in learning queue not being randomized +* Fix crash with fullscreen mode and hidden answer buttons +* Fix rare crash when opening deck options +* Improve support with TalkBack diff --git a/src/changelog/v2.8.md b/src/changelog/v2.8.md new file mode 100644 index 0000000..986e92a --- /dev/null +++ b/src/changelog/v2.8.md @@ -0,0 +1,31 @@ +## Version 2.8.4 (2018-04-27) +* Fix error syncing due to too many card templates + +## Version 2.8.3 (2017-11-10) +* Fix crash adding a picture from camera +* Fix add note icon disappearing in browser after search +* Fix translations from Glosbe +* Fix crash long-tapping when no deck is selected +* Fix crash entering advanced settings on some devices +* Fix incorrect graph display in statistics +* Fix deck not changing properly in statistics +* Fix rounding error in statistics weekly breakdown +* Fix spurious new deck created on model rename +* Improve error message on exception during media sync +* Improve animation when transitioning between screens +* Use a round icon on devices that support it + +## Version 2.8.2 (2017-02-28) +* Fix bugs showing confirmation dialogs in various places +* Fix uncommon crash showing dialog after sync + +## Version 2.8.1 (2017-02-06) +* Allow sending exported apkg to arbitrary app (e.g. Google Drive) +* Allow AnkiWeb to display a warning on sync completion +* Fix potential full-sync after sync cancellation +* Fix media sync sometimes scanning all files again +* Fix removing $ character when importing media files +* Improve automatic card answer timing when audio is played +* Improve rendering of some statistics +* Fix some crashes in the Russian, Vietnamese, and Chinese translations +* Fix crash sending exported apkg by email. NB: Export path can no longer be modified. diff --git a/src/changelog/v2.9.md b/src/changelog/v2.9.md new file mode 100644 index 0000000..3708786 --- /dev/null +++ b/src/changelog/v2.9.md @@ -0,0 +1,124 @@ +## Version 2.9.7 (2020-04-30) +* Fix crash / workaround deck options timer config regression in AnkiDesktop + +## Version 2.9.6 (2020-04-03) +* Fix multimedia crashes (permissions handling, image add, preview) +* Fix UI and crashes in database check (user dialog + exception handling) +* Fix Windows 10 image compatibility issue with image paths +* Fix AnkiDesktop sync compatibility issue if more than 1000 cards due +* Fix crash in card browser render +* Fix parsing of image tags in card browser +* Fix crash in StudyOptionsFragment +* Fix issue with deck options group changing on export +* Fix issue with exports containing unexpected media +* Fix issue with dynamic decks (crash fix, export fix) +* Fix high frequency issue "AnkiDroid directory is inaccessible" +* Fix high frequency WebView (card viewer) crash +* Add columns to card browser (due, ease, changed, created, edited) +* Fix card scheduler not respecting maximum intervals +* Fix card browser spins forever on images or empty strings + +## Version 2.9.5 (2020-03-15) +* Fix crash rendering card list while updating card browser search +* Fix case-sensitivity issue with pronunciation words not being found +* Fix crash caused by auto-sync on startup showing dialog too soon +* Fix crash on preview of TTS cards showing language selectiond dialog too slowly +* Fix crash on import if collection not found +* Fix Anki ecosystem deck configuration issue for Anki Desktop users <= 2.16 +* Fix crash if user attempts to open camera or gallery and no app is available +* Fix crash building deck reminders while deck is synchronizing +* Fix crash related to audio recording stop +* Show helpful messages if import fails because device is out of space +* Fix crash when taking pictures on devices with Lollipop and older + +## Version 2.9.4 (2020-02-18) +* Fix crash when fetching pronunciations in note editor +* Fix issue with pronunciation words not being found +* Fix crash on startup for users with auto-sync on startup +* Fix crash on deck import when app is in background +* Fix crash for users of Google Chrome Canary +* Fix crash when adding certain audio clips +* Fix crash related to fetching Sound metadata +* Fix issue where audio plays twice + +## Version 2.9.3 (2020-02-09) +* Fix issues with connection timeouts and new encryption library +* Fix incorrect handling of decks with ':::' in their name + +## Version 2.9.2 (2020-02-03) +* Add support for new AnkiWeb encryption changes +* Fix some bugs using filtered decks +* Fix crash on app startup with uninitialized collection +* Fix some issues with new cloze deletion menu +* Fix issue with Mathjax + cloze deletion +* Fix incorrect intervals bug with new scheduler +* Add various patches from Anki Desktop + +## Version 2.9.1 (2019-10-16) +* Fix crash reviewing on Android 5 - 7 +* Fix crash on Hungarian translation + +## Version 2.9 (2019-10-14) +* Change to new adaptive icon +* Add multi-select in the card browser (delete, change deck, reschedule) +* Add support for new Anki 2.1 scheduler +* Add support for Mathjax +* Add ability to add local audio files to notes +* Add ability to specify filename and folder on export and import +* Add ability to insert cloze in Note Editor +* Add ability to reposition cards +* Add ability to use due reminders for specific decks +* Add support for gamepad input when reviewing +* Add support for common keyboard shortcuts from Anki Desktop +* Add ability to search in Card Browser for text from system context menu +* Add ability to recognize tts HTML elements in questions and answers +* Add ability to display LaTeX rendered to SVG (vs PNG) from Anki Desktop +* Add confirmation check for full sync trigger in preferences +* Fix excessive pull-to-sync false positives. Disable when not at top of page. +* Fix some issues with focus in Note Editor +* Fix media sync errors related to file creation issues +* Fix crash related to use of camera without permission or no camera hardware +* Fix crash related to Card Browser allowing preview with no cards selected +* Fix crash in Reviewer when collection inaccessible +* Fix crash related to TTS when TTS not initialized +* Fix crash related to sdcard mount/unmount on inaccessible collection +* Fix crash related to audio button being visible after loading pronunciation media +* Fix crash when attempting to import invalid zip files +* Fix crash related to switching from split-window mode to single-window mode +* Fix crash related to missing preferences in Preference editor +* Fix crash on deck selection after deleting a deck and immediately closing app +* Fix crash in Reviewer when non-standard browser installed +* Fix type-answer field showing unexpectedly after undo in Reviewer +* Fix incorrect display of some characters when using type-answer +* Fix error related to media in subfolders not showing in Reviewer +* Fix some issues with generated flashcard html and CSS selectors +* Fix some Glosbe and Beolingus regressions +* Fix issue where new deck was created when note type was renamed +* Fix add note button disappearing from Card Browser when returning from search +* Fix some statistics display issues +* Fix incorrect display of some preferences +* Fix invisible notification bar in NoteEditor +* Fix newline characters not working in cloze deletions +* Increase max card count display from 1000 to 99999 +* Improve display handling of very long review intervals (> 68 years) +* Improve next/back buttons when using Previewer on multiple cards +* Improve handling of selected deck between statistics, card browser and deck picker +* Improve Card Browser search by restoring when returning from other activities +* Improve card focus handling when moving between Note Editor and Card Template Editor +* Improve labeling of deck-group vs deck-specific options +* Improve formatting of HTTP error codes during sync +* Improve handling of multi-touch events while whiteboard displayed +* Improve permission dialog descriptions +* Improve handling of "preview new cards" setting when creating custom study deck +* Improve Navigation Drawer performance on older devices +* Improve database check dialog with addition progress updates during check +* Use different notification channels for study reminders and general notifications +* Drop support for Android < Ice Cream Sandwich MR1 (API15, Android 4.0.3) +* Add support for more features on Chromebook (import, export, restore backup, camera) +* Add API support for card/note bury and suspend +* Add API to open Reviewer on specific decks from other apps +* Add support for HTML/Javascript debugging +* Add link to third party apps which support AnkiDroid API in advanced preferences +* Fix issue with custom sync server certificates +* Perform basic DB integrity check on app upgrade +* Introduce optional analytics reporting diff --git a/src/chapter_1.md b/src/chapter_1.md deleted file mode 100644 index b743fda..0000000 --- a/src/chapter_1.md +++ /dev/null @@ -1 +0,0 @@ -# Chapter 1 diff --git a/src/contributing.md b/src/contributing.md new file mode 100644 index 0000000..43a7b86 --- /dev/null +++ b/src/contributing.md @@ -0,0 +1,17 @@ +# Contributing to AnkiDroid + + + +AnkiDroid is an open source project, and its development relies on contributions from volunteers. Here are some of the ways you can contribute to the AnkiDroid project: + +### Get involved +Rate the app, join the [AnkiDroid forum](https://groups.google.com/g/anki-android) and answer questions for other users, submit bug reports, become a [beta tester](beta-testing.md), etc. More detailed information on ways you can contribute as a non-developer can be found on the [Wiki](https://github.com/ankidroid/Anki-Android/wiki/Contributing). + +### Translate +Translations of AnkiDroid and this user manual are all contributed by users, and are greatly appreciated. +See the translating wiki page for detailed instructions on how to contribute translations. + +### Develop +The source code for AnkiDroid is available on our main [Github page](https://github.com/ankidroid/Anki-Android), and bug fixes as well as new features are very welcome. +Before investing a lot of time on working on a new feature, you may like to ask on the forum first if it's likely to be merged into the main project, as not all features will be accepted. +If you are just getting started with Android programming, feel free to ask on the forum for some tips and/or tasks which are suitable for beginners. diff --git a/src/deck-overview.md b/src/deck-overview.md new file mode 100644 index 0000000..ad62033 --- /dev/null +++ b/src/deck-overview.md @@ -0,0 +1,33 @@ +# Deck Overview Screen + + + +![deck_overview.png](img/3-deck_overview.png) + +From the deck list, if you tap the counts area you will be taken to the deck overview screen. On tablets it is always shown in the area to the right of the deck list. + +On this screen you can view a summary of the deck, build custom study sessions, rebuild / empty filtered decks, and change deck options. When visible, pressing the study button will take you to the study screen for that deck. + +## App bar +The icons that are shown in the app bar depend on whether your deck is an ordinary deck or a filtered deck. + +### Ordinary decks + +#### Custom Study +Tapping the wrench icon allows you to create a custom session, for example to do extra reviews outside your normal schedule, or study only certain cards inside a deck. See the [filtered deck section](filtered-deck.md) for more information on this. + +### Filtered decks + +#### Empty deck +Tapping the cross icon will empty all of the cards in the current filtered deck (i.e. return them to their original deck). + +#### Rebuild deck +Tapping the rebuild icon will rebuild the current filtered deck according to the settings specified in filtered deck options. + +### Overflow menu + +#### Deck Options +Allows you to configure some options related to the current deck, such as the number of new cards and reviews to introduce each day. Please see the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options. + +#### Unbury +This option is only visible when the selected deck has cards that have been manually or automatically buried. diff --git a/src/deck-picker.md b/src/deck-picker.md new file mode 100644 index 0000000..aee783b --- /dev/null +++ b/src/deck-picker.md @@ -0,0 +1,127 @@ +# The Deck List + + + +*_Note:_* _This section onwards assumes you understand what [decks and cards](https://docs.ankiweb.net/getting-started.html#key-concepts) are_ + +The deck list is the screen you see when you start AnkiDroid. It displays a list of the decks which contain all of your flashcards, and allows you to perform various actions: + +![decks.png](img/1-decks.png) + +## Add button +The big blue + button in the bottom right corner is used to add new material to AnkiDroid. Pressing it expands to give the following three options, which are also described in the [tutorial video](https://www.youtube.com/watch?v=F2K1gOSdIZA). + +### Add +Choose this option if you want to create your own flashcards (notes) with AnkiDroid. "Notes" and "cards" have specific meanings in Anki, which are [explained in the main Anki manual](https://docs.ankiweb.net/getting-started.html#key-concepts). Please see the tutorial video for a quick introduction to adding notes, or refer to the [adding notes](adding-notes.md#add-note-screen) section below for more detailed information. + +### Get shared decks +To download a deck of cards from the internet that another user has contributed: + 1. Ensure you're connected to the internet. + 2. Tap + and then **Get shared decks**. AnkiWeb will open. + 3. Select a category, or type in a search. + 4. Tap **Info** on a deck you'd like to study. + 5. Scroll down and tap **Download**. + 6. You browser will download the file and display a `download complete` notification. + Tap this button. + 7. AnkiDroid will appear, and show a confirmation dialog. Tap the **Add** button. + 8. When the import completes, your deck should be ready to study. + +### Create deck +To create a new empty deck: + 1. Tap the **+** button and choose `Create deck` + 2. Choose a name for the deck, for example `New Japanese` + 3. Add cards to it following the `Add` instructions above + +## App Bar +At the top of each screen in AnkiDroid is the App Bar, with buttons for performing various actions. +The following actions are available from the app bar in the deck list: + +### Navigation menu button +Tapping the icon on the far left will show the [left navigation menu](drawer.md#navigation-drawer) for quickly navigating between the main parts of the app. + +### Sync button +The circular button with arrows on the right is for synchronizing your cards with the cloud, as described in the [adding decks from cloud](anki-desktop.md#using-anki-desktop-with-ankidroid) section. + +### Overflow menu button +On the far right is the overflow menu which contains less commonly used actions. These actions are described further below. + +**Hint:** long tapping on a button in the app bar anywhere in the app will display a textual hint describing what the button does! + +## Studying a Deck +To study the cards in a deck, simply tap on the deck name (or the "STUDY" button on a 10" tablet), and AnkiDroid will switch to study mode. + +Note that the currently selected deck is highlighted with a grey background, and if you have any [filtered decks](filtered-deck.md#filtered-decks) they will be highlighted using a blue font. Filtered decks are discussed elsewhere in the manual. + +## Other Deck Actions +Long tapping on a deck will show a list of other actions available to perform on that deck: + +### Rename deck +Use this option to rename a deck + +### Deck options +Tapping on deck options allows you to configure various deck specific study options. +Please see the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options. + +### Custom study +Allows you to choose from some convenient presets for studying outside of your normal schedule, for example increasing the study limit for the day. See the section on [filtered decks](filtered-deck.md#filtered-decks) for more detailed information. + +### Delete deck +Use this option to delete a deck (note: this action is not reversible, although you can [restore from a backup](backups.md#automatic-backups) + +### Export deck +This option can be used to share a deck with other users. See the [exporting decks](exporting.md#exporting-anki-files) section for more information. + +### Unbury +This option is only visible when the selected deck has cards that have been manually or automatically buried. + +### Rebuild / Empty +If the selected deck is a [filtered decks](filtered-deck.md#filtered-decks) then you also have the option to rebuild or empty the cards in it. + + +#### Clickable areas on the decks +Each deck in the list has three clickable areas: + +### Deck expander +If you are using [subdecks](https://docs.ankiweb.net/getting-started.html#decks), then a deck expander button may appear on the far left of the deck, which can be used to show / hide the subdecks. A ▶ icon means the deck has hidden subdecks which can be shown, a ▼ icon means the deck has visible subdecks that can be hidden, and no icon means that the deck has no subdecks. + +**Note:** subdecks can be created by using the naming convention `PARENT::CHILD`. + +### Deck name +This is the main clickable area, which will take you to the study screen if there are cards available to review. + +### Count buttons +The count buttons on the far right of each deck act as a separate clickable area that takes you to the deck overview instead of the study screen. This can be useful if you want to quickly view the number of cards available in the deck. + +## Advanced Actions +Some additional actions are located in the overflow menu for less common tasks, which are summarized below: + +### Undo +After reviewing the last card in a study session, you can undo it from here. + +### Check database +This can automatically fix a lot of problems with your database, and will also purge any unused tags. If you experience any problems with your collection, this is the first action you should try. + +>**NOTE:** Under some circumstances, check database will move cards to a deck named _!Recovered Cards_. If this occurs, please move the cards to an appropriate deck via the [card browser](browser.md#findingsearchingbrowsing), and delete _!Recovered Cards_ when it is empty. + +### Check media +Try to run this if you experience any issues with media syncing. + +### Empty cards +Remove any empty cards from your collection. See the [desktop documentation](https://docs.ankiweb.net/templates/generation.html#card-generation--deletion) for more. + +### Restore from backup +Allows you to restore from one of AnkiDroid's [automatic backups](backups.md#automatic-backups) + +### Manage note types +Allows you to add, edit, and delete note types. See the [customizing card layout](advanced-features/customizing-card-layout.md) section for more help with this advanced feature.Keyboard Shortcuts + +### Import +Import a .apkg anki file containing a deck. See the [importing](importing/importing-anki-files.md) section for more. + +### Export collection +Export entire collection as a collection.apkg file. See the [exporting](exporting.md) section for more. + +## Deck Counts +Next to each deck, three numbers are displayed. The left, blue number, corresponds to how many new cards you have to learn today. Anki will introduce 20 new cards a day by default, and you can customize this number if you'd like. The red number in the middle is for the cards due to be studied today which are currently in the learning phase, and the green number is the cards which are due for review (i.e. cards which have already graduated from the learning phase). On a deck you've never studied before, these numbers will both be zero. + +As explained above, tapping on the counts will take you to the deck overview screen. \ No newline at end of file diff --git a/src/drawer.md b/src/drawer.md new file mode 100644 index 0000000..8e312a1 --- /dev/null +++ b/src/drawer.md @@ -0,0 +1,28 @@ +# Navigation Drawer + +![navigation_drawer.png](img/2-navigation_drawer.png) + +The navigation drawer can be opened from most places in the application by pressing the left menu icon, +or alternatively swiping outwards from anywhere on the far left side of the screen. It is used +for quickly navigating between different parts of the application. You can switch to the following screens: + +### Decks +Takes you to the top level of the app where the list of cards are shown ([more info here](deck-picker.md)) + +### Card Browser +Shows a list of all your cards ([more info here](browser.md)) + +### Statistics +Helps you track your study progress ([more info in Anki manual](https://docs.ankiweb.net/stats.html#statistics) and [here](advanced-features/advanced-statistics.md)) + +### Night mode +This switches the app to a dark theme which many users find is less straining on the eyes, particularly when reviewing in the dark. See the wiki for instructions on how to customize the card background and font color used in night mode. + +### Settings +Allows you to customize the app ([more info here](settings.md)) + +### Help +Opens this web page + +### Send feedback +Get support from the AnkiDroid team diff --git a/src/editing-notes.md b/src/editing-notes.md new file mode 100644 index 0000000..24a6f93 --- /dev/null +++ b/src/editing-notes.md @@ -0,0 +1,28 @@ +# Edit Note Screen +The edit note screen can be opened by choosing edit while reviewing, or by opening a card in the browser. The edit screen is similar to the add new note screen mentioned above, with some key differences: + + + * Changing the deck operates on the selected card (which is underlined in the **Cards** box). + If a note type is chosen which has more than one card, only the currently selected card will be moved to the new deck. + + * Changing the **Type** dropdown selector changes to the note type edit mode. In this mode, editing the content of the note (i.e. deck, fields, etc) is disabled, + and if a custom note type with more than two fields is being used, additional buttons will appear which let you control the mapping of the fields to the new note type. + +If a note type is selected which has less cards than the original note type, only the first n cards will be kept. For example changing from **Basic (and reversed card)** to **Basic** + will lead to only the first card being kept. To warn you of this, the text in the **Cards** box will appear red, and a confirmation dialog will be shown before the note is saved. + +>Hint: to change the type for multiple notes in one go, or to customize the mapping between cards, use the **Change note type** option in the browser on Anki Desktop. + +There are also several advanced options available in the main menu: + +### Add note +Create a new empty note + +### Copy card +Copy the current note to a new editable note + +### Reset progress +Move the card to the end of the new card queue. The current state of the card is cleared, but not its revision history. + +### Reschedule +Allows you to reschedule as a review card on a given date. This is useful if you have imported already-learnt material, and you want to start it off with higher initial intervals. diff --git a/src/exporting.md b/src/exporting.md new file mode 100644 index 0000000..6071295 --- /dev/null +++ b/src/exporting.md @@ -0,0 +1,34 @@ +# Exporting Anki Files + +AnkiDroid can export your flashcards in the .apkg Anki file format so that you can import them into Anki Desktop, or share them with other people. +As in Anki Desktop, you can either export a [collection package or deck package](https://docs.ankiweb.net/exporting.html#packaged-decks), depending on what you are trying to achieve. + +There are two export options available: **include scheduling information** and **include media**. Generally the default options are sufficient, if you choose not to include scheduling information, Anki will assume that you are sharing the deck with other people, and will remove marked and leech tags so that they will have a clean copy of it. + +## Exporting collection package +When exporting for use in Anki Desktop, you generally want to [export your entire collection](https://docs.ankiweb.net/exporting.html#collection-colpkg), including all your review history etc. + +From the main menu in the decks screen: + + 1. Tap the **Export** item in the menu. + 2. Tap **OK** using default options + 3. Tap **OK** again to email the exported collection.apkg file to yourself, or alternatively you can manually copy to your computer using USB + +To import the file on your computer: + + 1. Save the file **collection.apkg** to your desktop + 2. Double-click on the file to start Anki. + 3. Confirm you wish to replace, so that the deck from your mobile device + overwrites the old data on your desktop. + 4. After importing, you can delete the apkg file on your desktop if you wish. + +## Exporting deck package +If you want to share a deck in AnkiDroid with another user, you can export a deck package. + +From the main menu in the decks screen: + + 1. Long tap on the deck you wish to export + 2. Tap **Export** + 3. Tap **OK** using the default options + 4. Tap **OK** again to email the exported apkg to another user + \ No newline at end of file diff --git a/src/filtered-deck.md b/src/filtered-deck.md new file mode 100644 index 0000000..48867b1 --- /dev/null +++ b/src/filtered-deck.md @@ -0,0 +1,13 @@ +# Filtered Decks + +Anki is designed to optimize the learning process, so that you study the minimum amount necessary to remember the majority of your cards. Once the congratulations screen is reached, further study becomes a case of diminishing returns: the amount of extra time spent going over the same cards again is generally not worth the moderate increase in retention you'll see. + +That said, if you have a test looming, or simply want to pass some time, it's possible to keep reviewing even after you are shown the congratulations message. + +A **filtered deck** is a temporary deck that contains cards based on various criteria, such as **forgotten today**, `is tagged 'hard'`, and so on. After studying cards in a filtered deck, or when the filtered deck is deleted, the cards are automatically returned to their original deck. + +The easiest way to create a filtered deck is by long clicking on a deck and choosing the **custom study** option. + +Advanced users can create a filtered deck manually, by choosing **Create filtered deck** from the overflow menu in the deck list screen. + +For further information on filtered decks, please see the [desktop documentation](https://docs.ankiweb.net/filtered-decks.html#filtered-decks--cramming). diff --git a/src/gestures.md b/src/gestures.md new file mode 100644 index 0000000..5c26315 --- /dev/null +++ b/src/gestures.md @@ -0,0 +1,188 @@ +# Gestures + + + +AnkiDroid allows you to customize the interface, so that actions you perform +frequently can be accomplished quickly by using tap and swipe gestures. + +### Actions +The following gestures can be used: + + * Swipe up + * Swipe down + * Swipe left + * Swipe right + * Double touch + * Touch top + * Touch bottom + * Touch left + * Tough right + +The following actions are available for each gesture: + +#### No action +Don't do anything. Useful if you want to disable certain swipes, tap zones and so on. + +#### Answer button 1 +When the answer screen is shown, choose the red +button, indicating you wish to review the card again soon. This is useful when +you forgot a card or wish to review it more frequently. +When the question is shown, this action (and all other answer actions below) will simply show the answer. + +#### Answer button 2 +When the answer screen is shown, choose the second button from the left, +generally indicating you found the card hard to remember. + +#### Answer button 3 +When the answer screen is shown, choose the third button from the left. + +#### Answer button 4 +When the answer screen is shown, choose the fourth button from the left (when applicable). + +#### Answer recommended (green) +When the answer screen is shown, choose the green button. +This is the button you should end up using the most. + +#### Answer better than recommended +When the answer screen is shown, choose the button on the +right, indicating you found the card too easy to remember and would like a +much longer delay. + +#### Undo +Undoes the last action. + +#### Edit card +Edits the current card. + +#### Mark +Adds a tag called **Marked** the current note, so it can be easily found in a search. + +#### Lookup expression +When the lookup feature is enabled (in advanced settings), lookup an expression +in the selected dictionary. Note: the expression needs to be copied to the clipboard before this action will work. + +#### Bury card +Hides the current card from review. + +#### Suspend card +Prevent current card from being shown during review until you unsuspend it via the card browser. + +#### Delete note +Deletes the currently shown note and all of its cards. + +#### Play media +Replay any audio on the card. + +#### Abort learning +Stop reviewing and go back to the deck overview page. + +#### Bury note +Bury the current note (i.e. hide it until the next day). + +#### Suspend note +Suspend the current note (i.e. hide it until you unsuspend it). + +#### Toggle Red Flag +Enables the red flag, unless the flag is already red, in which case the flag is disabled. + +#### Toggle Orange Flag +Enables the orange flag, unless the flag is already orange, in which case the flag is disabled. + +#### Toggle Green Flag +Enables the green flag, unless the flag is already green, in which case the flag is disabled. + +#### Toggle Blue Flag +Enables the blue flag, unless the flag is already blue, in which case the flag is disabled. + +#### Remove Flag +Removes the flag from the card. + +## Advanced +Some less common features for advanced users are shown here + +#### Collection path +Change the location where AnkiDroid's data is stored (not recommended) + +#### Force full sync +Tap this item to force a full upload or download on the next sync (for example, because you accidentally deleted a deck on one side and want to restore the deck rather than having its deletion synchronized). + +#### Advanced Statistics +Take into account the effect of future reviews in the **Forecast** graph. More info [here](advanced-features/advanced-statistics.md). + +### Workarounds + +#### Type answer into the card + +If you have set up your cards to ask you to type in the answer (as explained in [this section of the desktop manual](https://docs.ankiweb.net/templates/intro.html)), AnkiDroid will display a keyboard on such cards and allow you to check your answer. + +In order to improve user experience when working with the whiteboard and gestures, we use a typing box separate from the card, which is inconsistent with the way the feature works on Anki Desktop. + +For full consistency with Anki Desktop, you can enable this option which allows you to save screen area, and choose an appropriate font (e.g. Japanese vs Chinese) for the input box. + +#### Input Workaround +Some older devices couldn't gain focus into the text input box for typed-answer fields, so this was added (Hidden for API > 14). + +#### Longclick Workaround +Some older devices couldn't detect longclick for initiating selecting/copying of text, so this was added (Hidden for API > 10). + +#### Fix for Hebrew Vowels +Some older devices couldn't render Hebrew text, so this feature was added which allows the user to download and install a Hebrew font which is known to work (Hidden for API > 15). + +#### Text to Speech +Enable this option to have Android read out all the text on your flashcards using the default text to speech engine. Google's built-in TTS engine should work; 3rd party TTS engines may or may not. +AnkiDroid will ask you to select the language for the front and back of your cards once for each deck on the first time you review a card in that deck. +To change the language or disable TTS for a given deck after making your initial choice, you'll need to use the **reset languages** option described below and reconfigure for each deck. + +Alternatively, if you want only fragments of cards to be read aloud, or if you want to set the TTS language for multiple decks at once, you can insert `` tags into [card templates](advanced-features/customizing-card-layout.md). For example, with the following template for the back of the card + +```html +{{FrontSide}} + +
    + +{{EnglishTranslation}} +

    +{{Example}} +``` + +only the `EnglishTranslation` field will be read aloud in a British English voice; the `Example` field, lying outside the `` tag, won't be read aloud. Every `` tag needs to have the following two attributes: + + * **`service`**: should be set to **`android`**, otherwise the contents of the **``** tag won't be read aloud; + * **`voice`**: used to select the TTS language; should be a [two- or three- letter language code](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes), optionally followed by an underscore and a [two-letter country or region code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). A frequently updated list of languages supported by the Google TTS engine can be found on its [Wikipedia page](https://en.wikipedia.org/wiki/Google_Text-to-Speech). + +To make both AnkiDroid and the [AwesomeTTS](https://ankiatts.appspot.com) plugin to the desktop application use a TTS engine to read aloud certain card fragments, put the `` tag inside the `` tag recognised by AwesomeTTS, or vice versa. An example: + +```html + + + {{EnglishTranslation}} + + +``` + +AnkiDroid automatically ignores `` tags selecting an unknown TTS service. In contrast, AwesomeTTS may display a warning message on encountering the `` tag; to suppress it, uncheck the two _Show errors_ checkboxes on the _Playback_ tab of the _AwesomeTTS: Configuration_ dialog in the desktop application. + +_This feature may be removed in the future in favor of a separately downloadable plugin._ + +#### Lookup Dictionary +Dictionary to use to lookup words copied to the clipboard in the reviewer. After setting up a dictionary, do the following to perform the lookup: + + * Longclick on the text you want to copy in the reviewer + * After selecting the word you want to copy, press the **copy** icon in the app bar at the top of the screen + * Tap once anywhere on the flashcard + * A magnifying glass icon should appear, which performs the lookup when clicked + +Alternatively, the lookup action can be performed via a gesture. + +_This feature will likely be removed in the future in favor of a plugin_ + +#### Reset Languages +Useful for resetting the TTS language + +#### eReader (up/down buttons) +Support for eReader hardware buttons (see [issue 1625](https://github.com/ankidroid/Anki-Android/issues/1625)) + +_This feature will likely be removed in the future in favor of a plugin_ + +#### eReader Double Scrolling +Double the scrolling distance when using the eReader hardware buttons diff --git a/src/getting-started.md b/src/getting-started.md new file mode 100644 index 0000000..0efee93 --- /dev/null +++ b/src/getting-started.md @@ -0,0 +1,6 @@ +# Getting started +To start using AnkiDroid, we need to add some cards to study. From the main screen, tapping the big blue plus button will allow you to either add a new **note** (i.e. create new flashcards), download shared decks (decks that other people have created and shared online), or create new empty decks. + +Please watch this 5 minute [tutorial video](https://www.youtube.com/watch?v=F2K1gOSdIZA), which gives an introduction to adding, downloading, and studying cards in AnkiDroid. More detailed information can be found in the sections below. + +If you are an existing user of Anki Desktop wishing to import your decks from the computer, you might like to skip straight to the [using AnkiDroid with Anki Desktop](anki-desktop.md#using-anki-desktop-with-ankidroid) section. diff --git a/src/help.md b/src/help.md new file mode 100644 index 0000000..a2374ff --- /dev/null +++ b/src/help.md @@ -0,0 +1,34 @@ +# Help & Support + +## Before Asking + +Before asking for help, please try searching through the [AnkiDroid Manual](intro.md), the list of [Frequently Asked Questions](https://github.com/ankidroid/Anki-Android/wiki/FAQ), and also the main [Anki Manual](https://docs.ankiweb.net) for general help with the Anki system and features, and any issues not limited to Android. + +## Support +If you were unable to find what you needed in the documentation above, please visit the relevant site below: + +### Non-Android-Specific Issues +AnkiDroid (the Android version of Anki) is created and managed independently from other Anki versions. For the PC / Web / iOS versions, and general Anki issues that are not limited to Android, please visit the main [Anki support site](https://forums.ankiweb.net). + +### AnkiDroid Questions +For questions and help concerning AnkiDroid, please visit the [user forum](https://groups.google.com/g/anki-android), or you can send your questions to the forum's [public email address](mailto:public-forum@ankidroid.org) if you don't want to register on the forum. + +### Bug Reports and Feature Requests +For bug reports and feature requests, please search through the current list of open issues on the [AnkiDroid issue tracker](https://github.com/ankidroid/Anki-Android/issues), and if there are no existing issues, create a new issue including as much information as possible. +For bug reports, please also include the output of **debug info** by following the steps below: + +1. Open the navigation drawer by tapping the button on the top left of the screen +2. Tap **settings** +3. Tap **advanced** +4. Tap **about AnkiDroid** at the bottom +5. Tap the **copy debug info** button at the bottom (which copies **debug info** to the clipboard) +6. If filling out the bug report on your mobile device, paste the contents of the clipboard directly to the issue. Alternatively, you can paste the contents of the clipboard into a new email, send it to yourself, then copy and paste that into the bug report from your computer. + +![DebugInfo.png](img/DebugInfo.png) + +**Note:** if you are unable to open the app at all, so cannot even access **settings** then please follow [these instructions](https://github.com/ankidroid/Anki-Android/wiki/Unopenable-collections). + +This **debug info** is important as it allows us to match your report with our internal crash report data. + +### Contributing to AnkiDroid +AnkiDroid is an open source project, and anyone is welcome to contribute (including non-developers)! For help with contributing to AnkiDroid, please first check the [contribution wiki page](https://github.com/ankidroid/Anki-Android/wiki/Contributing), and ask any further questions in the [main forum](https://groups.google.com/g/anki-android). diff --git a/src/img/1-decks.png b/src/img/1-decks.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb62d42d4a85fd15ebf5101bea9dec5fae4e7d5 GIT binary patch literal 17133 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 Kt_b$V?|%XA*AQ6% literal 0 HcmV?d00001 diff --git a/src/img/3-deck_overview.png b/src/img/3-deck_overview.png new file mode 100644 index 0000000000000000000000000000000000000000..6e2098c2fbeee579770da9e3111f8d70c6ab8c5c GIT binary patch literal 11973 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 z z0hA2fiQ~W66mv+oFqS#c8~UfAe}LbCw!nT2Lgk8;R_wArkHx7R%Yn`b(&XUgVi8H)`f85lFo^F` z;1=Y5(1-qn_g`o?zZE&HK;yifvOAHqA!Ld5|0No80cVL^8Z<4HEwPYUQ?2;B16g?G zFEmmkBN85@49%bZ(HwP8qt!&UFy)l&_+yom{|&{Wo>1upQEczg*;*1jZIU4oZuEu` zq{)D9kV0r*MbT#l66qR560E~B%1s~ORsM*k04NNcJxLc0?emJlR1OJg`!_Vv*gw4% zf5d{DnCeUF6`AVU+IZLjtOX|4NqvD2oe&SGb0_`9zD8pDK-5QOMJS-FEVu^+)7>8M zjzI4A7?}@IYdy?yuX7Z}aa`;5rp6@Og4Ua4gU{mIRjy>=&AeLWYo2IVqk(8I2zDK` z&8lCHgcf%id^4U#Jo@$gP2wjAojuF%7>`WB*;oYoN4A7EB{d>-re+kSce3>SgVF0B ziXn7BKTtame@6-KSA6%&Aa6Yyg~cZ(UsicP#qPlmvmc0QxttWT+?Ri3Uv?ZJrf(>N zCsN0{Y++FmeZ$=?;tqbPafA3&gbNKU`h}s`fV<{KRQs>P-V- z>)6j|qudCtNf!4e!}(FqXCK5z(rzd-;U=6xTh1)3HKdEO+F1|6su3j`3g1c8=DYa7 zVz0BAx|WAr@<3)Bk@_Y-VUJuzWR$Ux|sw>#Mwe$KlPtw!M=pZ@?+-r zvLzE9f%zs<;-%EI&A&6&1F~ScqB#qz{1g2BEC!i>2Isj@;Z6)=R>ZhP`e3y5zYQ-S z0%RFxji}Onm$9gZSDgXppFmcVi46LD`ckstlyH=KOFkW=bH@Hf6iN3ca`1EroW zdWtoozpr1Oroktwi&?^FAj&~NTU5$?a>2o&happ~!d-_jYX+hnj&>m7H0#Cp+uo{I ztN5u@Ja;^oBE@;i~hc>33 zCb9D3)(rVpu>G;}je^%i9BmZ9E>DM5aA?`eoBaKiwzwl14<_J8-Q-=ScNch$RvJD{ zOb4d~$CEmbZV^1ZjVaSq4~wwec8q*1DI&<~-pqPT3f5!7bNmIGwuHzouIr{IhF`yg znsFPiTZ*@{WO_GKP3QM-M;2th3DDaVQQTq#o;>2z7;6&-jLp;{BT^p_uB`I;BSS+1 z4~F%(8rJ#who5tbn}a>!KXp(Ha-u9y8R}b&+c{L)+_Q)D29@`4OCB`@naWaTugwgZ z`+0^>l0t)=Z3>tRZf)N@ke(i<6~2D%D(;r?#wOWIKf=A2wKxB$!ikEQz$btOoV|AI z$F~1VKf)iii|{xmcQd14e1MI2Iywpd5_r$?tMFOsgh+m|)PhNfu-Cht^o}V$`~@sT zzl^ggDQPw0Hn6GX)U3D8G2xT$88pOG=Bho)K@UBlI1YYhgGtzg@j|iWoyEUmp(rrfC#i5tZ`=G z!=4?3uM}%sXM-%_pw1u5ZORaa=Iol0F|UqCOixhvn>-`sQS90Ztc$-jYpM*ocu(%w zLc0({_=CX;YyK9eE*1%YK_Cil;4|3YOY6+djZrs@B!(CS5n4V`2IuoN+Bun!mz`91 zLDs`lC%aR(2Qyl!UhCXx{+?AHz3_9NO!|so-@uk zcbxIw9rt~Dd_ndA_WI8?=lsQ-_+Cp>85fHR3jqNE_qmF~OYr#!0Ra($f%NZ{7+Vws z1g)pf6=ZdMvi85Adyw>}7JAmDRdWgA3|bjRMcSCJbhL}$`%%;JVHAeu^2ZZOH3vi1 zTP`sUO9|?ZG1#*BIx4NI6wY~4b#!n{h^xuK|;@r{)iLEqoB=Rj^qmSWhZzDVxD4_I(?+Y z?Cb1G-wPt=hF$ae%MUSA4s>c=Z2p0qYB3<#K$-{G7$siao2duH5{1~tekJPovcN?9 zLW$u_?6JeL>aS#&?Lxdi#pj6|1F@c=mPc_WjeCC1L-_pf$2xIHy3gg{#>`N2!(Q`5 z$Bu4Ykcnrvj4+41Q{^2El&*W#DeuR`&LvtnqR`=q8d;gcgL1m?gxc|A12@6oRV{`` zGIB2E&$%a&Xc@?U-FF^O)bl6GgEPgp{7PQtfA$r{>weLA{{3%V`|Rb~Z=?I)^Ep~L zDN1dflA!|E^99f^bd(faWZB5W@}US}hy+|h6;ZWOPi=}9mTkCvDR>b*rmGL_DZS<_ ztAdwk)nS4#@@H3B8N~&)&*;AB45Fux-+|M8SgD4fwAHculefK{KnRR&YKT{b+;jfA)aen3eKTXSg{ z^|N-6kvl}Pc&Ch0A_nQJ+AaQ+cC1=461tVU9STiFqk6OME@V9>nH4kCKVfL4i6P`z zK>$5W6wm8cN&PW?;A(h9%h=haC7baxiHOj~frY!Vqe9 z!a0gEiMRJ+C$W~4(KHY53|_p%GYmbs@t1$FaZ&jq&DgS--|HWw5F(>trFS|c4wo{( zWy-`xm0(n6{yIwrBfMzQ?4Q_KWeHz={3-Yj7fV!HjmQ?Yc}G8DImZprHXSDK<5qDIq?Y#z0TJA$MIUx6pB!UBi3CKZEA z{o(-0o22{SKbC8Wc)u$@ng7JeHv5^f6~+jB*r$N!lIi%!DH03C<5HQ!wPcFYIbf<$ z@y*(&UQxz0RM$e^3T7P!m{}o}nLEYdXSLwR{V1YB35`k@$>ShC7W8)U4J>~ zT9dW3L(p0!S{Mb4+2R(cKcM4p@Ya7aaCX%|94r-SnL}Qez8oeWjIUjx>#yL}yT5K+ zdyz)MmM{F>p+)Y^(TnN(VP)L|$)T`bgBN73iwE<5>I_Z(5Aps{hX{f9_5(OFlvhrZFA;@)%=-nWgyp)*DjNs zNSq5vi+HfdWv7DpT#U`D1YxJ3F%QJIH$(8S?okY zK=vTgkk?QBnjxf{t`LvKTbjV(!2-*#)Ta6ho7;pH=F?GL2=R2wy;?O^?Fe{Wc)@xr z9Lh@BtyTV-X32wYg3FBd-lHmypM{w3nP6YkpUMk(&cs+oJsak}oZxK>@q0+hPt@L? z)&2evw>a$Nn|Du`3H2P}*+_+yac9{PlSBzjuRxf+w)c3UA3Dr7;R&7k-l96Oa~73P zFBE$}XBM7f5^w_J=?32-Z#Np&I9EF{*#uAr}>PKeszpqU_Im2Q%#~ zg%;_4{2*U{jnNhCJ$fypPikJgZ(CoA@rwTJ7*ymMNcYdu3$Ob^6A4q0T&qNH=Lv{=%$8B;FhC6sKGo|`lsYqgb*uV*O#RuJfn-JJwunoDAls@`hGb;=g6J?q%C`JXR|ac zyq;I!Fo!2~W-J92Uf?&IfbJho01e+6VV5$}&Xh5EX%0tQwhB~P3YIiOk}UOOL|;!n za$JQpewC3oWd#wxws8h| z?h-NMelu)*uKm5-aa4=;y|Q%uZQ~0Ay-?!=5j1<4OWzy**F2gJQZp1BSn%+it?d3_ z2j4kPPuHj`ul4xRIa&);_QP8P)am^JHm5oz{Hf??!-1)JuXf`S=PdS4!Vv_7(0qa_ zE;D>@3?f_W>&GAu^SCVj#m$qnn+h__H!6jb)Jcre{_(8*{k-HNDe*q$Hfd+d$=qPAyl@&< z*bf;NA$ZCD+@DA9R9+UgbC0m%bDf;ZlW7@|4ZAr(<56eDVdKW;X6M>17Fx``r249` zRa-`(%mI~SXB?PNUU|d_C3A{QZ^AS)X0C@9P;rpK$)7o_>E4JHJS<}+NZ~0sgnVG< z53xOrK>lzkZk9TY@@K5eTMoA46hg1Ql{3Rlvd#D+9&;OQCQI~h{Z3;UzOG>=Z(B|zsIo2PR!#^)?cHrC=?GngUdr+8lriGkq3-*+_IGQMvQ<>>;@<{YRz zD@|`$F^I#_d4f>e!*&&ec?Jq>9KuY$SD%~~gXE8Q3bKrysLq7v3IlIGt*2BBZbJqx zcV#d6=YznAwN^ID|uMq6d0BzQ@a^Zzm^phE&99O+?L+; zVbp!B$2fqeG9B`09wxv%dIdr1b#-)~F)5f@vGilIu@9kI!fST-!4ow79x4D=ADRsQ zH5P5R3oowd#6XYCD-B`?Q3<9~l>&$#%qM+|BrxzcF}SrXsr3}8?dPUb!O`q5v}uyZ z>FOl8OqU+{*$5D8d?^ya|3Nf5R*kY!|MBYoCl>M_MSfQNe#X-(~+N`3psrQI{coG10L5>4bqQPT%= zH+k2)0sHoQHPdNk0WMa9b@%gndHF@AXE_ORhe59Jxjs6QHktOe>Rp$%gF}~v>848q z3iqJ?;06!QORTlkd92jXR+3UBv9-?wA*OCj5r(^!oXu>;0^_1f1eM28O&XhP5|Q_^$e8u*`hUy8szuu zmp?r-{o{OFe|U6L-&*c3&bSaj$@1a4qdnBSH@ zqRlB{oMFd8WTZSUoc@$$Bj!}zS&k1C#ZDUxQa<#$1ml=pA2qx2b`UP&;ULWZ`yqNq zRKMA=m4{?$d*3^boaejQ8AX?Gn;w2FLyUr&o!SnszLQmZCXR%JhcYtU)B1YJUWOw_ z=VS;TZEWB*J-Gk=sYo&km^em<9_-SeP2xh_pY_SDs-tP5wtm*4-0;M5!0EA5^kc&* z!%AkqoN+VUZS&PZ#YA-xMw!cA;H_;_j%eozx?R)We)W0*evdm)S#lMm&F+~jix{3%rQ%!FT;@+=H1LZON-@eJ?TBUe$ zuIc^K*R?$%W@ct7sb(>8oq&ECC?lf5)Q-p0OU-O4-?lBO`ctc>VqTic32~8G_V8P}mrBoA-+6tsbe~ zTV$%E$f&5LCU2L~Z0W9O{6lyyGULaLjM>(}+rC74O3${(N^D5fM>aTl@Iut znTa?rK%M4u<)b@Qs@r^heVyiNe)^qr3>oAr#Xm7ZBKGQzGb4;}niwB{LbNwuU#|H@ z!fSK3+U^Cqpl+!VX&_yopF{KTZ*sq^)ARz!pMq9jZ7hnfLI~( zc7(HEo$2WKbPUq!k`<;6t`@oe(SeH<7V>Tbyrqjx-ud>kwU~Ys1uru)GpWeQ(alg7 zr|)ksEw*F=Z*){6xxD+aphS(+Mzszdn*=>B%dNB*J6pq_$?E@36ye_)S>QlJSWZC{ z+}NjT-{^x6_%m=UNFA{6^7jq9D&(s;N>f;vnotD$ax-V?LINBqyWwLzd8J$Eg=zeso@Ox{*?QyV@a4;w*y=Y3xT<_JVU_5$r(46-={P+ItwL)gz3Yd0im@O^KBlKb z-MVVuOm`;D>wa}x?>*n2ulK(^5NjOyB8g8U=DODXeg=C06P=5NrKfD66|*0A+oZ|s z{_b>?4BhSs-8|f7u@QBR{#gLK(L6{|kY?m|(-i?CjWkmvbaV+-9p3c~UOh3SCXF6X zH6PTEOyM%W4vC^=gCP0qWIsFA-3Ym~;T=?3oqbqlY}z#2XtM zL%6v)-zA&oF|7J(H=5nkznm28&C1A#7`}x~&O;(tkHv0?82?JQEhx|@o=hLn@amI+ zrka|dsAh$Mr1wEhs=KMFX|6xLu*2_6;WvAnZn7Q2sPK-C4zlSy*^Axj(YZP?$Z5FW z)nd>~l@cDCEUldGxzZ{HL1soQ2k?LQzM2Qg$O*{AQ#C1PFRd&AwJn##d8Y zQ}>5Z(4Eg4y{XJ3(kN$8 zyU7h(2&c=18q~4HS_pgIH)lIcuzKf3qnFN?^-Mnzae2v-@jW8(tVl=Z$uaz8|BO{5qJ zt6rQvkV<5{rp-wzdj|&z)*#P`l~`F=N==%`j`Nih^*B=UG*%LLXJ@B5189Z_{>|QprZbDr0&ha13N=0(HDh3OgvyRk zKtWSH1jV9TtXHu6Waa8;wTrAgQZO<)T2frxf_N{_w8c*)F^bJZ?kGlH{#B@8d`Ei} zE_H7LZLENPxoO~ZnF-ltBpUK4T~m7q=|aAt^K6w3$jon&9?Fu9&eu~KW7cXAe6~BG^ z_K8TuDRM369!+J9lRP4{@X^RB87(=MWrrBsad9{j-}CH5%v;!lIwLR@2Yn9~ex99t?_uNL{>dKuA{>&P zon7MvI^(!{Utb>xEA7+6g`Za3xGmH1)_KvF03Ypn2?+^FUJbnn&@pg>sUbicof2q3 zJZ&GS-l4!VGBRWyu9)?Nq44%pa((Z;8Cie+V8?J;wcCsR9b?o^9|~Izc@-6mbkjzU zowJ>ZeerG=C7Nv_ggJA+${2yrTC&nAG$HAfm@Cy3j`wupRfQ!bCE%W8Or?hg2mP4| zq>FW$yqwI;%wlBy)l^hq0?mQ9WXFy_fAtw#^n~(I!emqO^O*%g%eks*r$U16uJ{3& zX70#L!W1D4+IT81J}diDQ&V$iXQu`yb1W$ehce9OZea8{i5mV{#L389QP6JW6Ivs< z!l}B*q-v;{_u&}gME;aey1&8ae@X92pV@KZgCxw7v3F-dtf~3;y8$Rx+Q|Dy zIy&*1rf}%8XQZV~gK~=q0nxDs`Fl1{s+6C5reez{Omy?@W9=nxn+a&q0C^`Xm>LyU z%xR%lRa14fS7>yIxL^N%O5)HjduDu;KN z;p5}q#LiuvPn(VA$e3-%qAsV3!AWVM)G4W{Tjo?B$1lm{<>Zd)0Vw8;W4UnjyC^_c zAk?aO(5sU1aKSg0q8Cp>dLc*OSuEnNK*E|QQwcjn4D%Ou3z$^)iV2IE0hS|=6IIuN zdVa9j#H4G7N{Zgt9r7&bt|6kDGuLx>N*j*|(luqYAR;0%)!+Xeddo6<`+f3#NOW{`d37G(NzaiNf9P_)nU~u#W4=5-_B~ob z+^wR7i)fy=Q&AvGFfbrcG8s4FiAzdKcA>@7N|N1Xin|wHb2NGBcd&@U5EXJozC)*T zu>&V?m^9lg3(5?6F7vm8@TSXy_TP_0h}?}* zc{&`CkcmuatU1A523EcMut5WZD96FD!DE;;96hx-G!1#^4H7 zrL-=oPqb=1j6Y?ueNQXqYVNLkCHsRsYiofj+D6+vkn=IC!O;6k=L0bH#&Ahr#bTLPYOl6zBk8P^_ zekxFr@L&Fb>aXni6HO=Wr+^6x-I5Z%CI z<;#~Z0S-AhI0OU)#FB9*nFD?@bzwQEi}wLP{(fA(+QTg$WXg+dsa#_Y;Wtx5{r$51 zKlDoHnte~1Xgni9Sf1eF-%wIXU#P zMfQXlGyW?l1R(s*fyVyt=a}HG#(@C=+0y=7ySvm>R1W*=vFcmTJaWT!7piR3*x1;# zC9kiJt-vq;u5$i&GC4cw;4?A05gtC9;VZz{E}ZESS%si*hLr~Z7Xmyl?RO=S<}%F< zCt07X-wm9XzWe_u`2HJn{|~D0|Mr{C0ujG__|PF^&gPPW1s_b~^>$@<9yudC1iB|p z+7Z;Z$;pqUxMy809 zgwvc5;SC)fovXgXRLS+}sEo^eUAzXpY|hp)&<#Kyf~Fo%d%iP)eh<;poBE+!oGD~K z4wDVXBxbG1;5KXa2|fEqJb?gk$Opib%&MWPsu~j$b8~;Wd`zBFVLMC}DQ7Y0rhPBv zb7T$4Si{FlD?JjMJWtQf*6pj9`WqWg*%S#l(7?FV zB98NQ``=#`Y4J(}+;F3XTn)yLv{kWOAE71FlcN?L{^uEwu$F4rzA+sh1_?OZ0~t z)z&&h-%-+LfMlZ?^fypH_!N90JShZlcBzX5+zts>M1vJH^e|_O_1<`B#A2i8#Eu8( z*B|JLDF4v4UCkHk^R~A@$Cx%C6W1```M0liWT2tIAn28P6tH7#`?O|FLbIV=yK~lz*!R$6Kz4U_PssF0W$7t zhshseuGW(N7mgOI$;ru|MO~K4Oe8<;UmdSQxo5~qr|A-6@?N6f0N27ia<;jqM(DTX z2*JHH5UMW)isPsvJ|M55A;KxfJCHhXz7`c3FVOChy~_G@D7Uv#IC*}W7_eI~T~@N53O&|D3IA-`T1c?GOvu!93-~^IYJB2`c7L6lztXwclNYo<& z@%G*xS6nk_%|KICRsaPP#f+)mejGw6xPd(E__5=6G6P!ar=Eo-Z+w0sQGCRBiaN3u zGD{?6WJ8>{@;JW2<9#;Idd2)NxGYzmWze(w1)Rw_lKIo1Rxq~$oQc$YF7{kZf=S5g zQ)o!kZTCrNR}_T@IU4Z+ct2%t6f3TwREH=DCW|`Pd3axDTB)@z86=<1Za6d2NIslw zSTvGY1n9%q3^-=~^;E&1A~|f?qNj1P!<{=>qAqmzDF~Sa;$C~{Jz0N7a}pmEHfri;lE`t+==N}_jslrP6l~rA}cV* zNCvmUCT#G8=IV|RT3TA%!n72(4OY~v-xFCRa&KW;xm0GWX%*lJjWFT)?9Eh))iN?N zifwMcq=bptQQ#X6MQBpYA@oWZgrwOzc~>lN??v#79nTPmjhkV@tSl`nurRr{aMBQH z3!q4yWBJPYGg0H{MmG(6NOR^VDLK;qQG`#1dojzuBw+h@v~NXb@V(?Bfnrz@QEjc& zx zb$2%LLT>NZ!NF{G^n+>>4b+7~8X`KH#X(n2ZB z&s6vRqAcLoSlOoVd)W%V;hPlRGXu>K7xe{2BVR)Z#dm`MBINVfPaEeS^-2sv(<>_Y zZaAgcBS;l6XKlE$d>Z%6e_g&$<2LRk^7r$TAfX{irTfn_{lZ;GS*^*zr+=m}aC>=3 zeS-eZ+VDC1A3#)aBN6X6`iZ%$it;)qAOwF1C2iK;8pIpfXor&|_P- z!}AEc*2ax$Y<)aI*I%lAL;eFT`+fM1YH7z_1mSZP+g8bt&5aF(w0c)d04q_SzP(O` zP(gJhR3||X!P(Nxc@}^28#FNqiOi|-=V9~VSwI!Nn|c?B$vdC&9|uhvl%4I=5B-D2 zjFg7ih0sVB_6nY_j8CDH^(B^^cU)0gpllp6!SYmRvCe6}?DbD1JG7LpfG1~fDFixk z_Lo{doBSpoH&f+^mCbExl4S3I76L*AodSOAwt5C}7+O5VZ(brC&~?i~sJOmVpkkB3 zmVlY+)Y_MoMU#c;0sr;&pFW96Mw>IYq%tLNpl5&aMMBrZ5IOvY$E0yZ2%wlBFmv;$ zISbHh&fI2Eg`}`*z~ePB(R+k!2g7$NYiAaL(^yGPV-<}@n?NHjXIG>}Peq;AUTRb; zSC^2Ga0HJ?yXJp}*az?j?|8u=aGUBJXJ4Ml4@`rUHM|XFtPrW*KiM3dO>-!< z2OeR$X$wcthX_>_6-ceWzdxWEZopUpsBQol!4Y$w`qQUR0hA^~yZ{4^q?3C;$O_Zu z%34h0HA|qA&U_|`{cO9WySJB4%BKQ=4nCb!19*0zt&i%(P-7AkA9sp!w!;s>Yl;t$ zq`+nZfR4Hl2tv&7N-JfZ*-&J31#!^9!iU$pQEs$XfHxV6FxD&!xJUv1V9ck~)H?7I zc+fFN$UoomDc8f$08|PZZE$pcu4oZ)s!yT*j*W$7^_xG?{=~%L|LR$lm*`jW)_15x z(4E)_!^QUIrm*jc^-RL{_I7i#)aj=;(`B_&S!HHzt>ztJQ>Dg$8!tDwA$wvJ>xfLv zf#*8_*1hN7-HDdUb%EBZ0 zIspi|t^g|aZH%oZU`= zHxmzt?d8E@MIT9cb(o&=&e)7mo#RuFB;bR}C*Qm~yFRr$`^l#tjZfbz2QF64x={Lx zZ;SSw3ZNT>6NxSPzWLd+jwnw)b&rh^s*K%9v+&5l&3|l=^O{!hVhHAb9Ftyq-Bn{a zgt!?^XdQ)IO1`6(|BY!DOGvfX_L9+h>=DV*2jdJ1J~_Ks(?Tgdm}wYA@Z#WGy` zK|Uzr;zyErk-KWKsiz~9hxfpmh({9i{i;Zz=~#c+WiLt$s|};_B+1@n7xl$T7 z%Bq-D>Nu+4^|vZ=ny-tDG)HUFD>ZVA5&gXbX#Gr$CA$F_F?^u=)wwAw)A7w)Xwaf7 z3iC^zS@3-dBCdQ`E8Q~*T6^FVLmh~+xU-~Il{;g(uH@uIk;SX~?^Gyot4Gheywd&m z+0m?Qz<@za-NSGrH|0|j8;yrfY>yJs)c0yRN`QB>oZ_lpELM8DO)$>H670f#8g+_r9S3pX;Y&HeFP1p(551G1UK*tAEFZTJ6V=?&pNTr-qmV*oFoKc z1b6nVzYPizsc{y|?V-qSWD&P0Fcx z+d-PIx`J7Sh-!Qc48@Q;`yExp(je8~H<(RH3M4e@eqc)`MAL)nZmprpfRN@N!^X=Y%Kn z3&e_GWn<%Ptq0q}T23xZzJqc}O;5;}a+uop{I4!oxP9!?TBCh%^batA!W-9M@RT^* zj3!Ejta=AZp~aQ+PH|&rqR4P4fmV_ryplW>IL-2>Ts)@D>CTH8u?Mn7&0lPrT%o`t z1*4)(cGyB&aPaSxo>~T!R8(e{xC-~TZ-?r+J5tS;t7!n~+Ffj_-$rW@g0pj?oscQ( zxVgCjJ1eg^R4z0Q2dtXPGQxqLB4;JQJLl`|Y#^|IZDN9p8v4w21tGP`V~2?&*vQBT zOx~aZv!ER!`VHg)NT4vo`eRz}^?q@7mQsF3?l2KdDPE+1#xQ#WnNW{rLj7z_muOMx zYD`W}zN%1DhjE|cTel@w&N4@^_)qH2TA>0*9rSfnJ~8&ME=$eVA6e80o;G${^G(tb zy=xq18cd+(1eqYW8dBcTJ-i;^>*E81fNaih6GL>Q(hJ|=NQ4Hdur{FQy=Q+;wyT3t zqp~ejF)%n-9Q7QiBPDBK8w2+pjlD9CqPzO+6PJhxS=Z?YR_y>Vs4>h0WsmL658hbB zX->?*zMfChqZ(6P?X`RRhw(svj37deSKoD}`t^bF@xvYX1}jz~ialzi;5;zjw4cN2g0&u*SDRH&b z=vfR1ng$}58zy~e8BpFV=Nm8$NdD|29&Nn$>p)#`AesQI07{Dsjjup7Em#fzkdDV zx9Sy3XYF8x*&DrWw0J&>0Oqk*K#9#r+d6jf{GB)U*zK$p}l5x1G%us!oQ?T1klMJq_nIYp|!57tn7>qO|r6M z*QAP;?p4gc+ZBjvne1U>v3XKcQ*)f3L(sa-N#gObD<&wC3E^kkh49T^LqjMQva+&{ z^FU)WMO~*|`EL%S0G<)%+VV3S5k) zA+WO+N)1Fu=NuRaPYT&@4P{*Y8@_^K>1usxTp&+|wZw=+B*9dHH=%g?me-_F=jvOy zIK1;jt%*jl0{#vC35+f!f+~tPmNiDz)!n_x=a^}TjT-U_bJgZOR*29RYS$Ku&|kh` z^-en(EL18h(ldmA&vJ_vdBg*M-{ohBOofgw$Z&Q%_OMb{)yC&vv1{#t*cjg5)Tx4J zP#uj};adj*BSjKKY0GX53nT|_9H^F!vtW8s2%^(37w$Uj-uJ5Std#pA1<}{WsD^g| z2h<1jxMFswNC5o?_$z~_ksr{S6E=~?C}Klwkc`gy!uRa;k%1L$fUypX~c63rxH1n{p=n z4(J|(s7tQD4*I1=!oa`L))T7e>36Nzc*{T^%Rp6f1@|Cx3*+Al=~9MtDcO>fG)oMi zTPb|~NB855xOp6kE)x$niZ<{9> z^EUITLX1lwAChtjwt)Tg#1J_coU_c zs};%W;BEVFRFdDIv?|0UoVg~f=;UBy--h}c_GX<4;p|6X$D?3(DsSbsg%AT3;=4rh z>Bx}%2|;QRIBMqtNOxxT+*d~Gvo|%1K#v^9a^wrf#Dw>e5fdYy_B)G8`JG{0y!6Pe z1e0K(25*m6!+UP=C}gYWeWt7>;T50yQ5B~vRvTj1GVCzP<;2*n(@5ZzFhncL2V`!T zZu_K_awyF|{(?iS$m=2dErMFqIh}lz2D+!Hz-GdufM>w^#~4G1OZ4V>E`4OeJ6~BQ z*uOFVI(l^9-FSHo{Idmtl!zGsqE34%&ZJ+1RqQprX{?Ja{%JUf_rk%92&{!bad@R@ z$z9-LQNlr6IULJJCo@OZa@%HiGY!7pB%cu+V}%B|ZUHY#u2s0P2;dnI0(b|sy)P>Q zwl4hdu8zG->cXK}p~-f`ghcOgyJSQ7mIC75F=BgZ49YEU0ocF`+uen#&D@^;8C_jO z5{RuI;5OZCkLr9gKh6_v0?Gfl+5zNqO7>$n!tXiB5hg?^&gSHGSWicWE_OuFbBvl_ za`IwWpRm{t{)D})@KCk{!)YLhtMw=-@S2utxS8O5Ghl)tkWR&PrE&#K0U0%hZZ&#`=~zwffL zvbHBZauI}xw9?|O*kJrPipPAtc|ws$`&zCc+YA)Cu^~$Fxh}F)5;I`MY5r;iBcyk% zl1iRft^iY+3J(<>Q>+XSm)=ZZxrW!G)Lb(l&SoM@znS8KSeEhuf+{Onb8n;p{*)rq zz+CBFnRll;mJ5LZqF#xomzPL-wv^YeHdCcA|9}2_4T^`u&|x=bQmZ3d<2mlwA}^ZI z>CyH}(E!Z4K0xs^kmFy;VQ-O9g`+f9SNwibLvX^s0)5HcT?QuBF}V`^BxpGI!f3%W z)_`qy)@yHfGFerE)iIJprw`et@lQ#hge;J5D!7MQMoWLRpORp5P(ua^47kIylkLFI z?vmp~B{GE4kUONL?tDx$fs`9oN9jhYP?&W<)N`J-c!UOB>`{8jk7)V$h`C05P%^Z@ z-#*vXc5{n3BjXtQ9B$t&Z)M%66V^&y+Z=HHmcll6vu-gu6@f|`Gma<7&3PykbaBxr z0URjJ7NGkIw5UvoC^Mv_AMrT&_>vwv`+L)g&}IN=f8o+3wNlxBixDXjVj7#Bz(E4F z&Sua8Jgx*$BM|RL+Jj|8cpE!Wz!cclC^2iJ!``+YszioEyEINv>*>~`Sy55daL~Uj z{IW!fKN!nhq1E`IyOHQ4R3WH(n2W_K@#gVpGxP4t|whn zRn-a3R6R_mR(y+gvQ`jsB@rA?WmBw0^~#0`BE*~Rv3wkj)qS+sXF`ht5JhH|m>73R zni#{CQQj9OPMm--x(XmRoHeqgDEqh7i@tuvD34h|;P$dan<(a|5bZjKVc+fHa)z^{ z$$OAf(TxFT*J8+AEHW*wxut~`>sdh9t2)abtT;QqiqLb}+V%vve5Bm!R}8cJPRg%# zJ`qY(!C=&*=7b69N-;Ahk`O`@ayayo&Ha*&9KRspv5kCKV}-}$|!&hS!9C=Qt7Pa~H_prb0@x@!xPG) zWJ@-fH;3f6)H*LxWtVMN3k*fGhAUsD+PjnBmnJN&1M{S>u0og0>_O3~o!WjZPZ5Z5 zz8UU0bavMhb7yUpnI{(WWJvLr>G+~1uV1fVcxZ~6c`9Mih%gY* zM$uI5Uqiu6OM>wP4y$mI4W*AwQ+D+VNd^NR4uU``G!wpnsb@(Hr7kOo!MR$mp!ZXz zmYi;w^Nd~&`pbQ~JU6`|TWcT5{>NsgQ!*b#kNI-hi_n&U>z6**?~5I~Lq)KfRm~tn z!^2LqRV;z?G2?1xc=>h*K=~q{XF>wln8CVSjzR4K4 zcwiGP0wWOMr``{p_jGD@NF88+gpY?8m2!V~Ef`d(3no-x_ys1eB|z3amkKiHYk7_b zo9#vrS)$eANC9gZ8T?jCiFDH7ruZCZD!}BciucvqS*8r+7Pob!)qMm%o#0lt-R0GupavdyD>PNUV1Q34|hl7KJeKOHqDFmvbXU1U7}>Hwv4@ikf) z(a-^5qrbf+*X6yr8CYt>&^;bC05cdnKsouXV^aXm1`fA-QD zOYXl>(}$VB_T`*bUKrTT!17xmB@suT(bnRT<|jG=7F$9*F?(l^vSqH>GshXevCpSy z6WBWJzTbo9U(?;Rh7_`C$4XH@@kKq$KsnW?G{^+3aQ;~^Dq7|?;*8mi1HR)=_E|7k z1oOa=a!-;UhuBc6AVnpmxsNklUEw^!e2AN1W;r3r`_D#fAZ@Yjjq(7(ukzx9;W(Is zu9)*pU`Kxi%K=Q&S+@S6%sg>A-*q~tr+=y}lfyUU=Y5dz_4LG=(mFiWnZ?AeKq9%i zmj*ub0k$j9n3m;45|WbD8Pi-b&$>gUa0?Il5S>r2OSX}-AvrxX&jKjqpU3g~U+ncC zHe;Lz0vXUY`SxskOs;Ji>$O6T60gqDXMk25cW1L-pC^A^#800A9_v(zp*xVCGWTc1 zBIJuYV6R%dF%r~KWg=-VZpHUT;NJ2%{AO>$dg=o5p)0fyKL+fO{speW!@~ne3Np!q z0<|=eH&g0YZX@MNKaQ;J_wO#TCh@8#R?om8xaz`bCpBj z8Gsyj{>cLoz65)^71qlK-j8bX%d~K`WbFXpAp(UmyXY9JkKaxZh=QX>CNJt!e+9Mz z`EmY&WaYM<2ZM`r0}E%U3>f*72RScxob{uh4p&!IQEa+8ZpQ{y%!19HJhcc4WH5dw z9Y)?sq?Hr_w_&Lp-FzmEq=AHsiHQjmdbQY?C}z?ZY5#vqcVGd>911)w;0JWNYKbA| z@pXZHA9{NFQ{6KYy_-03NX_PAHz0gnM#j{qU_-kD6SUu+FjQ==rG;zf^LwOW7PbG^ z)%QU|r+M21ny1+@21^{0Fqz;fUb8X}kD(vh%q<$9hj6KNzJF&qH6K1+|LcFrG2otJ zT>pcHX1pX49ech^&^u&8Ag`tI?EJxC#Sg18x&_!0C>YNun&cdlhe{56Ui@Sg7#G^$RW5vY0iNsFXCP)ezf1;@KJMB`o#t8Z2&jtz& z+h{z)T89Ejaho>ZQ&O=nBd%)^H)&>Z#f@IW67EXe0X_3ZbyL=aP!8ng@}Affp#E(r z`qEx)DB2&f14ci4cQxS{D!Wzz|-nM42Qxhlm-Q}PR&6KmAJs*P_| zpM$`U7Yq!fOaug$&T;7Q;9R^T6#p|??7ctG<4eoO@Yx)YVqiE8B(qHtvr^n1BcsPD zL`UvqKbwT%!Ys@~B|NfLwuS}gYX{{l89*De?TVs&{=8QgMR}r-a(~{A_F0LS=Wq{4 z7J?G~zoPhlBWopw zSVA^ql3ED$p1bNgh;PnBU8r`a`}%w=F`yJ`Mv+2%I?{dtw59J}yYM`+{Sqi#Yu z=Ig27EjLrkpQ58Hv$AP_ zYF^~Bsk&|?S)|NGnX;&xkVUgDwqBGY;P!3X!ELBS-|u$Hfccy7Zvj-F`FEk;MK+Le zk^8IU7CUAt+T>u94#*NVVrX2P5eJLax95Uu5Z4l;b5dG~4;2z<>$@*{X))t@zA0w# zzfJj%6O*NOyiVhxM8v`zBQ>&(tLqQ7ctzSJ!6*8BE?TJw-I#M|f(kAlwE^=c@-u@{ z7{nfQCgGp$&zqUhZiJ`*`X!JFmHk%LiWjdGM;y0=`GD=|P=O*u zBilf^S55$Bfbw%@8HKZmt)Mga4iEb zGQJ0yzZqMCumxbQMv4%^e-TJOxifDNs=>Z;sZphZ!thF;R-C<)nA`YL92YC%Um-wVj61@^tD`T6m_*;4kD&^_$I>GI%O zF-|>->8Qv+T9P1Th&(>MgH|Ae%LFTFR?q&tF1N959{SnI%}ea;Y+t@mioNybPR+CZ z&$#Ov=eq20*F(MmDGzq?d*O$mD_FQ-I2{ccd4BP1HR;eD`CMREJnJ;l&IcS853h%h z2293pstBPqO9`~`FHlNMiaR^PRJfRjtL-x7260Al(;x2Kw^q9xKE)Uzr9Len*nTq| zmvp|99Iw|1+UGM-AaienEBO&<`PtD1a0Ff0F@#jNH$G{k?T_T>zxZssfNdfx8ju5_ zRxd(?!TxF|mKxhxddM-$v1ZA{6>68RpplV(Vdw!Hpd5H2nEVF^W=Apa#}FH$a0Qc$ z+k$3GW=XJWl&pXs_FB1*i-gFI+_}XS>cS099jJxDQ}jY~E3VA(+ySgQk|8U^r8qqm zjN{}WK0q<@9L=89FAHedWTYa=3xc!c)iSs@_(F@1Skj4+kmEY&PZ$XlMfKpmmhAX_ z$e+D;Q&}AQNwK%v$+%m8!aZlMTzJkJ_s)hR!T$ph;12$_GIR@)=FRRcAr2=MafOM) zX|_-BHZ|GM8#~ePgwQjQO_u&w0N)BA^`YG9pC)<7W)PYmyD+174{I*|-yoz5IGx++j zGok0qQ|^6x;Bes4@&bC`licRFl%mMryjA0Tb1O8^AI6VYhJLG3Y)hi>rvuBG|F`&~fUi`dyGZsEMJEwbk(%Phh z2Z1aWGVk0;zjn=-{_$hvhLmZSE@5rv{riZ_@bvt=abp>~91Q4#ZtlscY4?4e$Hv7k z+p?S19>3sm`_U6J-W3683V*-#dsJrB?{_BkzdA4^_1)C_GlW2&dUyI>%zZ4}jk#AY zKvNI_z2L3-qf+k{t$CNF>+@Jek!yqV5QBvaA2laU3pYP&hd;|*8K^!HW&FD?ByWGD zrnG=gIdw|m?;p2j4UDTbpi|GEkKel0Xq8v5PQQAU0iAs8m~rj7a|t_lVj=zdb>zc< zrnM<p9Qyo-hHhmJpd=0|J2p1jz4;8@oR<8qJz4o(RnANpeWWl+1! zXJv{iWr6o%O7Q5T_paA2y~@w!un6?}ki4B?d03d>mwP@|!+_orYK+_)k+;}ijfGRu zn#nJ7VVM8^!nkdlyUM4@+ER2m!kwI8gW(@r0~)-7+AqGx{{7z&&=?CodT!*{<*3^o z@29jDhy!IToWFjnA^`2=@i)JOm+++NFOY>XM##xiV5CTqSU@}$E=63fI6z}8=x*Y8 z`l~P2R|4oAVR>tUjq$(x=6ZZ8O`s`+v~O<>Xt>nC9lkPtL%VhRhJZ$R84&a;Fywtq z?6l?UDCX~Tmqve#gKzyI_ESXw`b_A#Om!y4g$Or3c(Qn*%Q5lpl$fj-|KxzE%;<^$ zG+YRB8}7tw?bt=V23>>J6h$uav$Ie?8{V9(9oxEgq z)W=Wk@8BtOKgB05*|d`-PDn~Yh)YQF4+(SL?kbFo`Skg|&vW4;AEgBJOLyRw_8h$GzNnKzaSV3NDR0GO;6tGa&k%!=!uI~ zsd97K-Ee}u!W$4PnLaV~UKCN1%Nlm3&hOoYxl$4;Kf2OrDvu4Gu zU283|5NMrJsSFHEadRtopx?*D?l^QjJu{0K6(vqeNnNqkMHCtOKI)*Gd+7na^69Gd z+;k_8ztP{d&o{Wf-G_zcPn;3o|LQ=BKOA^8B0W+fo`7cAhNnfahEb|Oo5%a7>n8f; zCg$q@bjir;INw~@Z&_&)-VgrvMq+DUPB5op$9)s=K?9;|&`WZ{G%*9(`5@1Q_uhJsNItUP3~ax3{&#BA^kI zboel=c;xWmWdO9>d_h``Zpp;;i3~RI0*%I+0pl?Rqf+t-DKm$_> zj`xi~AN`;?V0xls#w)e(0lG0Sa&LUrrswII>x|$Qt zfZfeYOw?;M;4)_RY%H@h2|ITx-n_Av*c@p1DgZjo!=qeWj^9R4hNl5=fp2nJx<;#= zxX76$?lX2;a%$QJ*F)wxV6b@d;?>dvdfoGlDXJ9q_gK&gGQgXBw+bIc+Vy%*Y*ws9 zya?#P1X)XjgEf5_9^ z$n2tc&vpY1Zy4~gznS;%r<^_wBGn&1(u*oai+kjV;`M85iOqoyG`+Z`%grqppy4{d zkNL>ref(ZuzI9)i7>;txr_Z7s_MbY3W-wyr!qNj8-gA6T0=<@k;2wT4I3)xN@RF02 z$>awQyD=&}Jp!vF;)OuNEy>8u7<+p{83PU1IUxNjpqD>sUBdHL2j{&`)4^9pOzS&J zmDWH$beRI3{rq{-p+oF%?7Vs8BE#8GMMS7SeNxB9BG9X^786?pI?(j&Xt@CWIw*vm zc&4ys*Z#zmRAJ&CBPV|RoN(~8yU-5_iFiM6%@%vhU>DHjHbiH}Bq$O-=Y0O06Tjib zW{O|tvobFGbCNO%Uh?BlJ_D`}k%$M-dV?OUW5^hq8n*cHGP}x9G@$hc1B@|+H)*>2 z30k2?G5Be2jKVk^JR75lQ|f~F_$cP9_MF~auvqJ<(;Wn=i$CB=_7l|_3@wA6tv%TVrgmKo6H8%i7K(g+-A4m1b4 zyhFLu$$_r0fdkEf=0KNsD0ezJ&=odtpgGX80{Z_0f%HpV5#m*p00000NkvXXu0mjf D3k}QC literal 0 HcmV?d00001 diff --git a/src/img/5-adding.png b/src/img/5-adding.png new file mode 100644 index 0000000000000000000000000000000000000000..284e75b4356ec35e41bba7edc63bf7b007935bcc GIT binary patch literal 11427 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 literal 0 HcmV?d00001 diff --git a/src/img/6-browser.png b/src/img/6-browser.png new file mode 100644 index 0000000000000000000000000000000000000000..a2a050bfd0fdc4b79633f628ddf3674c1d746f28 GIT binary patch literal 23275 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 W6)T62Q*ep(C2b7@^;bx{$o~U%IdJ#@ literal 0 HcmV?d00001 diff --git a/src/img/AlphaTestJoinGroup.png b/src/img/AlphaTestJoinGroup.png new file mode 100644 index 0000000000000000000000000000000000000000..94e669ccdbe99744451d2c65f567d4c238c93e07 GIT binary patch literal 58609 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 literal 0 HcmV?d00001 diff --git a/src/img/AnkiDesktop.png b/src/img/AnkiDesktop.png new file mode 100644 index 0000000000000000000000000000000000000000..de0b1b87ea5e2ee6d19547f1257ec8a6eb1e86ea GIT binary patch literal 14763 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 literal 0 HcmV?d00001 diff --git a/src/img/DebugInfo-ru.png b/src/img/DebugInfo-ru.png new file mode 100644 index 0000000000000000000000000000000000000000..25c909ad4b413acf528c434f21923685c6c2dd7a GIT binary patch literal 104337 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�k2$j6 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�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%0AB?Io6$lVw5q(d% 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 W8Xiqq13c=Hfx*+&&t;ucLK6V=UKPjy literal 0 HcmV?d00001 diff --git a/src/img/DebugInfo.png b/src/img/DebugInfo.png new file mode 100644 index 0000000000000000000000000000000000000000..16f492b4f87dc10c69635588ee74194defbcce77 GIT binary patch literal 21692 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�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 literal 0 HcmV?d00001 diff --git a/src/img/ReverseNoteType.png b/src/img/ReverseNoteType.png new file mode 100644 index 0000000000000000000000000000000000000000..318e722332429c44aae68dd4a6d2d83fbed38656 GIT binary patch literal 10639 zcmb_?1yCG+x8=a#lHl&{?m9RVoCJ3X!QF!g*8sr@4DL>l5Zr@gfP~-{+yexc?Y#fD zZ{OD2{i?QVDXM0wtGj=8@44rkJ29H-O4t}=7$6V`8>%d?4Sb%0KnM^t#J^W!ZID19 zR$ZvP%q!pAqmSqT*m_S-i}qRxx{gpB6*TRsGyTF{OZMAxC8LtSdp}!FCp)UBTxxUPdYnjJ-T4KYnR3Z1|wblb*ZEEezv@_K9SGIxODno$v=tu8|v z?vjIs;kV@s3-FbhR<%vH*wp#;#QXR!T;g1I>{D8P>bA3KOMN-dW4)Ol4XpgWdTNg2}xPf@ILoS8;`@sGuF(bsCV=JwDcn zThK!tSdaV3fMr(C@ue_)qgb=+E3n;#(|qzWljJG5?)NFV^na%?V^1cahjvl(#gcU* z5`j}4W2(^M7v6Mz?uj?2~TfR;;^(HAQL%GN!LowD5M*W|l6KN}lJoK>9 zHa^7cc=rGN^0sn;+t1p1i3CAyDD7X-^Z)q8fDvAkw3!sc=KC-}FF7{qILwB8!K{TW zUQ0yYD#uMVjycXInyz!!hfw1Msd-V7a$;yCN{Xs$)ouC%3-uO1H1Fe3=}z1n;^kG^ zuR_e`9~FqOD`WOaU;Rr%%^)39em|8{IA1X`p zxU1_MX(2g@HmxD|h1!IfQXZ`Y`W?4VNqIrEN!m}^!AZ=m<>Oa2F=(|d?o(pO+pFAc zm?Io9pN$MlwF?4I9D?<1*RM{MOa1R5!slaMY|>^~Nnhv6f~g2HoH`0?ckT&#(c=Wv*b`^t2bpu#Fd{bdj?W!~V z#9CvUsficRf#eW8!D8yyu&XXZilTw({-ab_p6q~|SdzdtXb)z}d_NjuBOvEmxKPc9 z3Nphi+g&@yp&cl~BP_Svf?UiLRR(BzAX_Km8v3^uj?s?&S%xbN}Jb92b0gY`C$KbaoXfmOyQ-5dSp@<)gO8 zJCcwG30j&z-qB!mcuqCnl6ZXlF~ArAupL`!w)97Sggjh zVQ(;U%o9ocS_z2qi@aAlb`4^GW8von1{3s`N$5SY{DRVBPhnw+s{Xb;%)t87y0FfK zyWjUUJh@3J+Gj_KD%2Ll$(CEi3JmjzB?x)cg-GuO?X8nD7KXYvdGsV$G$LuZ z{jSsA?#7B1kmnE3wlyww(?C$o>?|;t!Us^~)G+sLImL~5h+;O6y{#GjE6Wx3`Tk}dpn zGpXMyMDLDnt+46tA?pKkec9dHB|B+^85Kfhgxup%#|TtOrzxyPd%V#Oak%Xk}N)iY@A)H>|;FmX}VDVp_x3 zX4NEdcJb=XrN2eukHQ+Rk1Ldfe@MNGXt+D49^9z?lonSC-hDQFHs2(%`>l@;3*C+V zI%bLPPxiY$l6NXnUS;7rgL^2uXFK!OX|1)x=W@;&Bsg}_y7PLg^=#sX*T1+zZ`@Ow z(+=#=*6Q2u)x?i|K2p21w6FF%51*4$6ry@FH4jBmlL61zq&@@{M0)8U)L?JrpQI+U<_J|!Ja49( zuA1TmVdbZ=x~?8T%H zHZ0PwAk9*1Ua1c zd=c!wg=W=?!3gb!U;`Fw=8a8FE|{Mc8lmgc?+`=;eTBCx1v6)(CC9yCiS$FxP)1=+r?GSY_YH6X`@4< z*E6%Sppewe9xh)HAxEZ7Xw>ym|2;(I7k2yGAxQY!F28do1T{-Usx<^H7LRF;)AuMd zv072h$f@9(2}vt7x|N=Xt=m5bNCGkFz9FcZ2tsp*I9*A|GqLIm;}8{UiKac8NGnA} z6#MK#a)v7W9^~f>xy`Q;YDip`+T4CEd~*0-PZCh87!kqGe8DE&?pqlD8dW`84O`HZ z+E4&~c!TmeFE39Wm~9BE@Aa=F=}oODLeK=_ZgaB$V)g)%1eaMChax42tXv-feuyp* zGNeC%fCFb>T65c*E~(P1!-F$Wh2K!;LyFFx@CDpAM@CbbQBhG3x_xrvlB90Y%7!wd ze%fbiTE+I9ciBG-?6%k)Ec%@9jzF&hGA9nMOXlUah(C`S!#+C70=9 z^n1qJhTx}1F|Yk?{CqQacfOWEHVVI1=VdXU<9N5-&CPHkw!l7UX&MSVCMKqh|L*#lLMnhn zZ+3N6nudmki)(TOLSGwryH|#fhlf)sb$8gbi(pK{hD9NAdj3s%xbo?KN4mr3L=jzr z-CP#k*yhzMf&dAzVre+6CFtRHPGLBal2^>lmxQ4jF;nrEJ{kr_rAdbn*}&QUk1C&| z1xCb9r^Ob<1TqUbj+4dKlL_I~>hX3aozP9H+p_$i+d3N6l2X;IM$18rQ!8s2ujVQK z6xtV;tK(&@z7VOPdy(`-U?+hC4t}~@WkHxoWm1zxlJGq>2g@c#N277%iu=?${H%37 zXL(wWqLz@50Ae)C2%$rz2m9(|wOi&L%1PH97n))W+J&B3V8o&VqXusUTM3D~<7(GO zgwB8)_krA@=b|)ATewy*S0L~zheN%6e3Z<29OrmGV37%+v4B4TN2tdXXux+7+Pa`@SpZ#jZ+_$p=Cdl$pTeZxxp5_Kgl;ALh?3SF>Wn73xFKJ}df z#1gKRQfau2K*m1-ta@Q^5Vz#n#8I76*GB()9i|L=t~ZBx^g&t3=PjSlS707y19HC5S| zrDJ+JIv!pgE!LTJJCBO$O5LCKqvJD4OclgnprO^bwhB8My&Tznz$O0+3PvuSuLsh- zMm8ZQ3!majblrfQ<+YSIG|ZM-?vt7u?oFf=w`ma7y*!+M_inmLt=$pTcBH@G>PMxH zqN8z+>N5dnVNjLJY8SBi!1&<#tgI|T?=gKyj==DXZ+VjQ!!?9CY8o1=02%{PxigUy zRgV-!Q`7FcF6-jrf*n#n`ds?n^2}R2>JTC%{OUaej-w&oBXrB9`yqWx zgH$?5qDnOI*7JjixH!G+d&Ix_Lrk23j7g;bDv_|+tkeI`_wTP}!@d|?ml=Mt_c~hm zld2(Qx779bsHjl@LYhN@ zPJ2#D+ieMZ5q4Qpt6ljnz0 z2DT!O_zPABifM%Gx@((-NN>Ue+k$r{KVt3PobUXSzc^kduk9;zucl#9BI!>j%u$fe z4}SE^HAp-Cq~qh`lZI0wU<(gX*wIf1C#cP#Mg-q%5%Ub&7wS=pd5ZX*Sp%yBkuGrx z4Y2u9+F_pkO8NP7nfhk^Kt#LcB_(#4i?Qx<^D9%PZw++FWMwFhe-3^oZE5t9{=T?C zB08nZH2G0&fUk#1Y52wWcMLu=37q6sM5fJ)jL1EcYZzllat$Z=YfhTt`%`OIbN!y> zr$0Z<-b9>b>KKOI5iadlg{>v=a%j!9I2m0d8m9pX&o-OfLL<%P7r6YOB@wW!R9Pg` z=Kb4atu%GiqgpvMa&h>K*esxTiAVjS8)@RB_*LiCid;D7CHgfV4A-iDf}K>3Tyhx0 zQd6G5(V)RV0oHwYEDon}E&E2Vd8IYJ8K6~254EU7#C7LdQt^#=7fuf#wECNYn;7Fx#M!GXB@rn0w>7&M-s8a%31%b%Gz z{j3{`-!OoZ$2G~l_0OOUYLpMj)IkwSl{LL!)Msn52Z)2pd^>T3Hj&V|9A(Riz^%^vl?)okf;{VI2QQQ zmawkN?c3{K5HyO1F~aPPhKedD;%DtX)*Pw8&j#L33Slm@=h$vr3jhBh@4w+_8s3(E z#f!bvst6+(r}S{_TKMqY?Lyj@k`GP&=-vo=|X!!yhF7yUQbhqS$V{eGrYVU2vDWT$w{E%Yo{^W?|!eqx6DJq zCaWJox~nm21tpajfR%&9&Zl zK+5;EDOtw^t{orl?=Mv9RQ>)nT*NLC0|27;YFA*6fL&N}LRZ)AeiaQNm<-i%g@XNM znR;4dB7dT{fGpIQ?XuHT6i(>O^%Tp|5(Xp1u0};FIQ-Fq`^kgej^Ho6LEdXEyla<91z7k8jhEJV7Tem*Vp>WiG;aKuki7?qcfNV1$F4j z!QKN*(b{&7kHrr^ITuHNSQbF6s59?3YQv+?Km9cA@IK0>gJ;^CBUz;(Z|gTSFI`Y5 z=NoepJy;?;V||=?uw)bwnd9@Q?s+h;G#z|cH@e-lZ?J`NK1nktbEy4W4xz27`M#s$ z?sUDssHh0tHsuF9E34f?vz^IjPd7I=AV6th&{9{hXGSwYRfFjE9Gq zy~m0=x=%<=t?{h@dLJ#hMFWH8Mz0X0{2PYjhUxiZQ{Q3%5Eo&{m=`Yj)?&aV!cBc# z!Pj32_LPp5Z3uS$vW8d|R(NcM+~%lm^N&~KRdgD*g&NcNiyzcLPO(7sjDa|)P||6% z6xNhV)WyC?hs%E}W^Q4f3>7j-B&?8!eJXjD%xpB3Y%Nb;7b{T^BL&rn_oS@W*hUgl z>?lN5K<_j80|+BrTwFlPJj2B7?-XZX*c^z#2NIqJ6ip*SbTT;&=C=c0R!kdp{GFB! z+DN!8IGB_>hM&EgdNHsTXL-cO46j)5($akK;zc8@xR{}>8HkFuwl+YW(SJochEW6n zy6>Iig+`D$(?r9@(b0rEUwL={n4@1UqC#%Knw@Z#AXHa1rLdA^FQ%7xaADAI#Nsmr zdy!Jo@q81rSR}T=Y2|bZSb=x`MFdn)9=3(9b^-ObjE%D-+@P?X0f5^8yn5QGA2$;E zS{1;~3z{ck zTuRNW5;WV?e|_TV(ZQg`F(FKDj0a#bDXAa;EszADS~dVBFWC+=Y;n8+)T#ZwnGhx9 zt)E|eM+ZKfK_N?2@a$-@m7k9fVD+1aha4srM(%qOIh@VYe+wQpO{E^K!2&JsRv>!;XeT)4g9BvFhPOE0z%Sm z$K7JP3@>ksR&yvGM@w)cb|OdEs_qm%kuB)q9RsP_{UJQ6`R_G`jEv0j@o|6D^Q6Q?CKyz=uDH0^Zl=_0 zZ+dWW5ZK$uznGwJZ+(BTzRv4&Z2T7hV&mehcrWTL`kB;oN66v8ssLKK`<_Lc`RzM18>Xd)b z&duELg%07p{n|?lUn87B^c$mt|E-Wr2=;*0lIh`ewmItT>#eG`p6nOO&_qO#cLX65U94ftZS z)due{qMlJ^O9hIlC?b@Ul>rC`EVeN0TER2z{g~Bg3L{H=eEh2=O8+(>Ob3g`{;}8! z72<$Os#|9|ae3DNT$)1CpCH0AB8&e`tfbx{3i$SLz6o&30Lu39Ix6j~Yd*0JnJmZi zV73N`QhX*=S9kY5WL;K9o!@`{)Mync{;V|t!tiKq4PNoG3?M>Dr2M7M%b$U=qK6Kb zc)CAlp%!(w20&#F)f-UTIf4#C)+6tM2RpAf;(#nUTi#P{jj#s*nVQ!!ysC;_=*?Rh zVF0>gSdbGs+S`G&SZn$w1+H7uHxky=2go9q$>)HxQRW14;UPEH%LxMF5zE)Ium+jr z0yctInwlY0n>#y2?5DxI?8d~mQKp4;@iuL>A3hL>!dCD2ReIcMAZ)h!8juozYEw}#7!0txnq=Gbn>kiL3c)%%I}d(T z4WF5q8z7NASlpoC;p4Bn8NB9sm=r&;JwREE4dn10j3p$gVxyh^q_~>*0lkW7ZZIn< z31CzUfL?8CYy@y+qJD@JEDJ&xL8xH{lc^a49%Q@k6pxBJG?bB%nVE^P7Y`5r7e3ww zm$3*nvCrjFd*d5?}!w(mdZ1zlweV zZW$uY05ggE!`&6?!(Vp}6SUbegCanOu!JwRss= z_Q3?kL->kF?`#CjqLY-OCO=A3zrA$yRK*gDJuaMKR?izi7zqWuJsCj03cT2a>g1u> zimbiK4W0;T0TuYCmCu(DbXL(TaM@z2^d0Zb%~)Alo)KWAr94HZ7h)bL`ks zr4D;~=Zm~o3e>P(YLFA)DGz}bG1@Kw+Zrf{ECT~vLPEM-;*_a`BJc@?*qZP z)^f)?kaJ*6I+saydOC_dFSc2CP^WNyl^>L5xjIOhSSJM;NGm#yFSOB=Ec7hqMr;7``_n4FNZ2+Y>o)(tv4w zu)n{*)Vz0%j!y#rHI(Gz?ry(ass>bACXKAHl>oqjQp?pU+52Ac65-+&o7~iYj}bAO z;j4DYN=x9Kw3wIdbAW#6c6d8UOLuchKiayuJdHg*ASfmEB_~nw+W=Vx6TSFeQ6v4Z zxwh8x2*&USel8$yfC1-maXA4X2AfKPCoTE0t^8?-X^uF7Fk{9wloi0&f zjbvg4hI_PI6jD+e1~A`cuD-W-3Ks&Pm`zUzf;Mc5+{|nh(4!q49j#7_02La2%?b(L z+nX;@A?BdC{1Xwivbpui{YT|c0(lhr`5=(v2)lJnEu=vqnGC~wWVz*z}>jYe;5D^4)r;6V*WW4Uw zm(eRuI>Hg4FNC-(w7N)J4Pjl*O%4yEBE|6vs9`|04T#{=JMfTC05fv=^7}6u{}tN- zdxIDivIbo6`tse~G@$!o(#pjoq&u9`2h`(+Zc)bhHVh1m`}+q@Vp~cVj6vxX9WW({ zFFS|tSI`^eLe2pwOhQ7Uz<*Sp{TdQ^jsh?1>w~*oPz{IB_Z~5^v$MY}%wecy z?40ci3VKvZq6qAe2<>o_f1v+2h$WRV2a?92`usXkliS4=}o$ z>-TPsZ3As^`ws=~*={qDIq#a}G%=JzV!c2KJY?!*t%SfZFdH!*9DVw5#Cg{_`?gVE zVPjk4(c!{#|(=8u5AVQ>9r6>jy z?lfGTVxC-OS?zBibV0U5t}vis5j=$i88&I_37K`BrkfEVF;6J!Yp|$KnUCiE@FUMa zwkh(h4Fp{9gz)jbE6`Ai4dvqG3_M+v@%Q)Vvv!0HmcJ9VW1SJfqKJ03b~uA%(iLz61a(D41?%aC>pBz~)0Y4)dS<0Tf$j); z@Ax8&SZa*KJW>C&uWgtaJyaH>9zgnV4m)i_$?H7gWZyFP9j~tyRRvO zDOKa7a+1{=)$GoPwX+9ZuGl}n0UD~(GguCaLZc{ywNmsl!V_Xk9%+a*33j*+$&M*b zvAjK+voHhtIUXciN2}9fO)|~?5#dU`AR@}yO;>4E=5%C=AzFvJRc>@{JpYap4ka7Wf;dyuIq~J*yg7Ro*XP4&p zr>3{zgU#i!X23fZL^aja!L%6;WJ3YgnfkbjioqAbyT$kW9Vt(u(BM*q>d}$nQiK?k ziE)jc&CQ-0T~M>uW2;Go>R1C4{Y!xaU%6t^^p77oeWrB~nuSWy9r!4jlJZIfa!75l zO9kth=x1!m=9FXj_~Eho`197WOgr+EDGHz(YzIC*%2MTIWCS(+)IF=uHw^?ZpTnh_ zgHW&zk9nn|lC=%572?ss&d(yH=YYo#K(NN`*%a#VqF`EpJxACD<&A5qBVoY);=^6jYa(XEtC0W2uFOf-Sh~XGnmn_5E*f>bZEvx73fVum51`Z7_4Y;RE0(Wq zZwvW-B}fopH%;=0^zE6SzfrYjK(xHNJnEevH)vXUT6` +* Place the `.anki2` file in the newly created folder +* Rename the file to `collection.anki2` +* (If applicable) Temporarily log out of your AnkiWeb account: `Settings - AnkiDroid - AnkiWeb account` +* Open `Settings - Advanced - AnkiDroid Directory` and set the AnkiDroid Directory to the newly created folder. diff --git a/src/importing/importing-anki-files.md b/src/importing/importing-anki-files.md new file mode 100644 index 0000000..8290832 --- /dev/null +++ b/src/importing/importing-anki-files.md @@ -0,0 +1,22 @@ +# Importing Anki Files + +You can import Anki files (with .apkg file format) directly into AnkiDroid. Other file formats cannot be imported directly into AnkiDroid, however flashcards from most other applications can be imported into Anki Desktop on your computer, which can then be [added into AnkiDroid in the usual way](../anki-desktop.md). +See the [importing section of the Anki Desktop manual](https://docs.ankiweb.net/importing/intro.html) for help on importing into Anki Desktop. + +As in Anki Desktop, AnkiDroid distinguishes between [the two types of .apkg files](https://docs.ankiweb.net/exporting.html) (**collection package** and **deck package**) based on the filename. Collection packages have the name **collection.colpkg**, and when imported will completely _replace all contents_ in AnkiDroid. Any apkg file which is **_not_** named something that ends in **.colpkg** will be treated as a deck package, which will be _merged with any existing content_ when imported into to AnkiDroid. + +You can import .apkg Anki collection files into AnkiDroid either by opening them using the standard Android system, or by manually importing them from within AnkiDroid: + +## Open the file using Android +Apkg files are automatically associated with AnkiDroid, so for example if you open a .apkg email attachment which you sent to yourself, then AnkiDroid will automatically open the file and confirm if you want to import it. Simply click OK and the apkg file will be imported. + +## Import the file manually in AnkiDroid +You can also manually import .apkg files as follows: + + * Connect your device to your computer using USB + * Copy the .apkg from your computer to the AnkiDroid folder on your device + * Open AnkiDroid on your device + * From the main menu in the deck list, choose *Import* + * Choose the apkg file you just copied to your device when prompted + * Tap OK + \ No newline at end of file diff --git a/src/intro.md b/src/intro.md new file mode 100644 index 0000000..17a880f --- /dev/null +++ b/src/intro.md @@ -0,0 +1,9 @@ +# Introduction + +Thank you for using AnkiDroid, the Android client for the popular [Anki](http://ankisrs.net) spaced repetition system. + +Anki is spaced repetition technique which is simple but highly effective. It helps you memorize things by automatically repeating them across increasing intervals based on your responses with no need for you to keep track of what to study or when to study it. You create notes (or download shared decks) with content you need to memorize, and the scheduler will make sure you see the content when you need to. + +AnkiDroid is intended to be used in conjunction with Anki on your computer. While it is possible to function without it, some tasks are either only possible with, or a lot more efficient with Anki Desktop. Furthermore, it is **strongly recommended** to at least read [`Key Concepts`](https://docs.ankiweb.net/getting-started.html#key-concepts) section of the main Anki manual to understand the terminology used here. + +If this manual doesn't contain what you are looking for, please check the [AnkiDroid Wiki](https://github.com/ankidroid/Anki-Android/wiki) for a list of changes, instructions for submitting bug reports and feature requests, a list of frequently asked questions, and much more. diff --git a/src/keyboard-shortcuts.md b/src/keyboard-shortcuts.md new file mode 100644 index 0000000..3c0315d --- /dev/null +++ b/src/keyboard-shortcuts.md @@ -0,0 +1,66 @@ +# Keyboard Shortcuts + +## Home Screen + +|Shortcut|Purpose| +|-----|-----| +|A|Add Note| +|B|Card Browser| +|Y|Sync| + +## Reviewer + +|Shortcut|Purpose| +|-----|-----| +|1,2,3,4|Press the nth answer button| +|Gamepad Y|Flip Card/Press the first answer button| +|Gamepad X|Flip Card/Press the second answer button| +|Gamepad B|Flip Card/Press the third answer button| +|Gamepad A|Flip Card/Press the fourth answer button| +|Space,Enter|Flip Card/Answer Good| +|e|Edit Note| +|*|Mark Note| +|-|Bury Card| +|=|Bury Note| +|@|Suspend Card| +|!|Suspend Note| +|r,F5|Replay Media| +|z|Undo + +## Note Editor + +|Shortcut |Purpose +|-----|-----| +|Ctrl+Enter|Save Note| +|D|Select Deck| +|L|Card Template Editor| +|N|Select Note Type| +|T|Edit Tags| +|Ctrl+P|Preview Note| +|Ctrl+B|Bold| +|Ctrl+I|Italic| +|Ctrl+U|Underline| +|Ctrl+R|Insert Horizontal Rule| +|Ctrl+H|Insert Title| +|Ctrl+F|Change Font Size| +|Ctrl+M|Insert MathJax Equation| +|Ctrl+Shift+C|Insert New Cloze Deletion| +|Ctrl+Alt+Shift+C|Insert Cloze Deletion using existing number| +|Ctrl+1..0|Insert User-Defined HTML| + +## Card Browser + +|Shortcut |Purpose| +|-----|-----| +|Ctrl+A|Select All| +|Ctrl+E|Edit Note| +|Ctrl+D|Change Deck| +|Ctrl+K|Mark Note| +|Ctrl+Alt+R|Reschedule| + + +## Card Template Editor + +|Shortcut |Purpose| +|-----|-----| +|Ctrl+P|Preview Changed| diff --git a/src/note-formatting-toolbar.md b/src/note-formatting-toolbar.md new file mode 100644 index 0000000..92746c3 --- /dev/null +++ b/src/note-formatting-toolbar.md @@ -0,0 +1,7 @@ +# Note Formatting Toolbar + +The note formatting toolbar contains basic text formatting buttons (Bold, Italic, Underline, Horizontal Line, Insert Title, Change Font Size, [Insert MathJax](advanced-features/mathjax.md) and Insert Cloze Deletion). + +It also allows the addition of user-defined toolbar buttons using HTML. HTML is a powerful language allowing nearly endless customization of your cards. [Our wiki](https://github.com/ankidroid/Anki-Android/wiki/Note-Editor-Toolbar-HTML-Samples) contains common code samples to get you started. + +A user-defined toolbar button can be removed by long pressing the button and selecting **Delete**. diff --git a/src/removed-features.md b/src/removed-features.md new file mode 100644 index 0000000..e69de29 diff --git a/src/reviewer.md b/src/reviewer.md new file mode 100644 index 0000000..2615c6c --- /dev/null +++ b/src/reviewer.md @@ -0,0 +1,55 @@ +# Study Screen + +Tapping on the deck name from the deck list, or the study button from the deck overview screen will take you to the study screen where you do your study. + +![reviewer.png](img/4-reviewer.png) + +## Basics +If you have not used Anki on a computer before, you may like to have a look at the first [intro video](https://docs.ankiweb.net/getting-started.html#videos) before reading on, as it explains the basic review process. + +On the top left of the screen you'll see three numbers. From the left, these correspond to new cards, learning cards, and cards to review. These are explained in more detail in the intro videos for the desktop program, so please [check them out](https://docs.ankiweb.net/getting-started.html#videos) if you haven't already. + +When you've looked at a card's question and remembered the answer, or decided you don't know it, tap the **show answer** button. When you do, the bottom area will change to display 2-4 answer buttons, depending on how you've answered the card previously. The buttons will display the time a card will next be shown, so 10m means **10 minutes** and **5d** means **5 days**. You can tap directly on these buttons to choose a particular answer. + +To make reviewing faster, you can configure gestures (for example taps and swipes) to answer cards without using the buttons. See the [preferences section](settings.md) for more information on configuring gestures. + +## App Bar +The App Bar at the top of the study screen has several buttons for performing various common actions. The number of buttons which are shown is determined automatically by Android based on the size and resolution of your screen. If there is not enough space to show the button for a given action, then the action will be available from the menu instead. If you are unsure what a button does, you can long-tap on it to see the name of the action. The following action are available: + +#### Undo +Undo the answer you chose for the last card you studied (button always shown). + +#### Mark Card +Adds a **marked** tag to the current note, so it can be easily found in the browser. +This is useful when you want to take some action on the note at a later date, such as looking up a word when you get home. Marked cards also show a small star in the upper-right-hand corner during reviews. + +#### Flag Card +Adds a color coded **flag** (red, orange, green, or blue) +This can be used as a general purpose indicator to differentiate your cards. Flags are represented by a number from 1-4, corresponding to the previously listed colors. + +#### Edit Card +Open the edit note screen, where you can change the content displayed on the flashcard (see the [editing notes section](editing-notes.md) for more help) + +#### Hide / Delete +Give options to bury, suspend, or delete the current note or card + +- **Bury card / Bury note:** Hides a card or all of the note’s cards from review until the next day. (If you want to unbury cards before then, you can choose “unbury” from the long-press menu in the [deck list](deck-picker.md), or from the [deck overview screen](deck-overview.md).) This is useful if you cannot answer the card at the moment or you want to come back to it another time. Burying can also happen automatically for cards of the same note. If cards were in learning when they are buried, they are moved back to the new card queue or review queue prior to being buried. +- **Suspend card / Suspend note:** Hides a card or all of the note’s cards from review until they are manually unsuspended (by long-tapping a card in the [card browser](browser.md)). This is useful if you want to avoid reviewing the note for some time, but don’t want to delete it. If cards were in learning when they are suspended, they are moved back to the new card queue or review queue prior to being suspended. +- **Delete note:** Deletes the note and all of its cards. + +#### Replay Audio +If the card has audio on the front or back, it will be played again. + +#### Enable / Disable Whiteboard +This action enables or disables the whiteboard feature for the current deck. The whiteboard feature allows you to draw on the screen, which is particularly useful for practicing drawing characters from languages such as Japanese. When the whiteboard has been enabled for the current deck, two new actions will become available for clearing and hiding the whiteboard. Disabling the whiteboard will hide these actions as well as the whiteboard itself. + +#### Deck options +Open the deck specific study options. See the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options. + +#### Check Pronunciation +This action enables or disables the temporary audio recorder toolbar at the top of the card. This feature allows you to record your voice and replay it. It is used primarily to check your pronunciation. This toolbar is composed of three buttons: play, stop playing and record microphone audio. This tool can be used while viewing either the question or the answer. + +## Reaching the end of the study session +When you've finished the cards that are due to be studied today, you'll be taken back to the decks list and shown a congratulations message. From here you can select a different deck, or if you've finished studying for the day, you can simply tap the home button in order to close AnkiDroid (and you can also do this in the middle of reviews if you wish). + +If you wish to keep studying the same deck further, tap on the deck again which will give you several options for continued study. Please see the [filtered deck](filtered-deck.md) section for more on custom study. diff --git a/src/rtl.md b/src/rtl.md new file mode 100644 index 0000000..fb73565 --- /dev/null +++ b/src/rtl.md @@ -0,0 +1,15 @@ +# Using Right-To-Left Languages with AnkiDroid + +Anki and AnkiDroid have full support for RTL languages such as Arabic, Hebrew, and Persian. + +## Editing Fields as RTL +Fields can be marked as RTL (currently possible only from Anki Desktop) for RTL editing. When a field is marked as RTL, then the text is right-aligned in editing fields and punctuation is correctly displayed at the end (left) of sentences. Text that contains blocks of LTR characters will be properly displayed as well, with the beginning of the sentence appearing to the right of the LTR block and the end of the sentence being displayed to the left of the LTR block. + +Directionality is especially important for editing and creating RTL cloze deletions as the cloze format includes both neutral and LTR markup characters. Therefore it is recommended to use a separate note type for LTR cloze deletions and RTL cloze deletions. + +## Displaying Fields as RTL during study +To display a field as RTL, with proper right-alignment and directionality (punctuation at left of sentences, proper flow around LTR blocks), the field should be wrapped in a div or span element with the RTL directionality specified: + +```html +
    +``` \ No newline at end of file diff --git a/src/settings.md b/src/settings.md new file mode 100644 index 0000000..54c9664 --- /dev/null +++ b/src/settings.md @@ -0,0 +1,126 @@ +# Preferences + + + +The preferences screen can be accessed by opening the navigation drawer, and choosing **Settings**. It allows you to customize various application settings and how AnkiDroid appears. + +The Preferences screen is divided up into different sections, which are covered below. + +## AnkiDroid +These are the general settings which affect the whole app: + +#### AnkiWeb account +Change the account used for syncing with the cloud. For more information on syncing, please see [this section](anki-desktop.md). + +#### Fetch media on sync +By default, AnkiDroid will sync sounds and images as well as your cards and review history. +If you disable this option, sounds and images will not be downloaded from or uploaded to the sync server by AnkiDroid. + +#### Automatic synchronization +Enable this option if you want AnkiDroid to sync every time you open and close the app. There is a limit of once every ten minutes for this behavior. Once a sync begins you can cancel it by pressing your device's back button, however it can take some time for the cancellation to take effect. + +Users that want more fine-grained control over when sync occurred might like to use a 3rd party app like Tasker to automate synchronization. See the
    API documentation for more information on this. + +#### Deck for new cards +The default of **Use current deck** means that Anki saves the last-used note type for each deck and selects it again then next time you choose the deck (and, in addition, will start with the current deck selected when choosing Add from anywhere). The other option, **Decide by note type,** saves the last-used deck for each note type (and opens the add window to the last-used note type when you choose Add). This may be more convenient if you always use a single note type for each deck. + +#### Language +Change the language. Note: AnkiDroid translations are contributed by volunteers. If you find missing or incorrect translations, feel free to contribute to the translation project. More details can be found on the AnkiDroid Wiki. + +#### Error reporting mode +Control whether or not AnkiDroid asks your permission before sending error reports to our error reporting system when AnkiDroid crashes. You can also disable the reporting feature entirely if you wish. + +## Notifications +This subsection allows you configure when and how AnkiDroid shows alerts in the Android notification bar. + +#### Notify when +**Never notify** will disable all notifications from AnkiDroid. **Pending messages available** will only show important status updates like when a sync completed. **More than n cards due** will show a notification when you have more than n cards due (requires the widget to be enabled). + +#### Vibrate +Checking this will make your device vibrate when showing a notification + +#### Blink light +Checking this will make your device light blink when an unread notification exists (if your device has a notification LED) + + +## Reviewing + +The reviewing screen allows you to customize how AnkiDroid behaves when you're +reviewing cards. Note that only the reviewing settings which are applied to **all decks** are shown here. There are more settings related to reviewing which are **deck specific**. These deck specific settings are located in **Deck options**. + +#### New card position +Controls when new cards are shown: either mixed with, after, or before all reviews. + +#### Start of next day +Controls when AnkiDroid should start showing the next day's cards. +The default setting of 4AM ensures that if you're studying around midnight, you won't have two days worth of cards shown to you in one session. If you stay up very late or wake up very early, you may want to adjust this to a time you're usually sleeping. + +#### Learn ahead limit +The Learn ahead limit tells AnkiDroid how to behave when there is nothing left to study in the current deck but cards in learning. The default setting of 20 minutes tells AnkiDroid that cards should be shown early if they are due to be shown in less than 20 minutes and there's nothing else to do. If you set this to 0, Anki will always wait the full period, showing the congratulations screen until the remaining cards are ready to be reviewed. + +#### Timebox limit +Timeboxing is a technique to help you focus by dividing a longer activity (such as a 30 minute study session) into smaller blocks. If you set the timebox time limit to a non-zero number of minutes, AnkiDroid will periodically show a message saying you how many cards you've managed to study during the prescribed time limit. + +## Display +This subsection relates to the way cards are displayed during reviewing + +#### Keep screen on +Ignore the automatic screen timeout setting in Android to always keep the screen on. + +#### Fullscreen mode +Switches to an immersive fullscreen mode so that you can use more of the screen. You can choose between **Hide the system bars** which will hide the system status bar, action bar, and bottom navigation buttons. Alternatively you can choose **Hide the system bars and answer buttons**, which will hide everything except for the actual card content itself. You can temporarily exit fullscreen mode by swiping inwards (i.e. down or up) from the system bars. + +_Note that immersive fullscreen mode is only supported on Android 4.4+_ + +#### Center align +By default AnkiDroid tries to show cards exactly as they are shown on Anki Desktop, however if you prefer your cards to be center aligned vertically in AnkiDroid then you can enable this feature. + +#### Show button time +By default, the answer buttons will display the time a card will next be shown. If you disable this option, the times will not appear, and only labels like **Again**, **Good** and **Easy** will be shown. + +#### Card zoom +Here you can increase the zoom level of the card content (excluding images). You can use this option if you want to increase the font size for all cards. + +#### Image zoom +Here you can increase the zoom level of any images embedded in your cards. + +#### Answer button size +If you find it difficult to press the answer button, you can use this setting to make it bigger. + +#### Show remaining +Disabling this allows you to hide the card count in the top left of the screen. + +## Whiteboard +This subsection controls the whiteboard in the reviewer. +Note: the whiteboard must be enabled in each deck individually from the menu in the study screen. + +#### Stroke width +Control the stroke width of the whiteboard. Reducing the stroke width may allow you to draw with more detail. + +#### Black strokes +Use black strokes instead of color, which may reduce memory usage. Note: this setting doesn't apply when night mode is enabled. + +## Automatic display answer +The automatic display answer feature allows you to have the answer shown automatically after some timeout period. You can also have the next question shown automatically; in this case the card is assumed to be failed (i.e. the again button is automatically chosen) + +#### Time to show answer +Time to wait until answer is automatically shown + +#### Time to show next question +Time to wait until next question is automatically shown. + +## Fonts +In this screen you can change the font used by AnkiDroid, and some scaling options related to fonts. +See the [custom fonts](advanced-features/custom-fonts.md) section for more information about using custom fonts. + +#### Default font +Choose the default font used by the AnkiDroid reviewer. You can add fonts to this list by copying them to the **fonts** folder. + +#### Default font applicability +The default setting is to only use the default font when no font has been specified in the card styling via Anki Desktop, however you can also force the default font to be applied, ignoring any font specification in the card styling. + +#### Browser and editor font +The font to be used by the browser and editor + +#### Card browser font scaling +Lets you change the font size used in the card browser. diff --git a/src/storage-migration-error.md b/src/storage-migration-error.md new file mode 100644 index 0000000..e69de29 From 35d49b0a298aa7e7293f47544687bf574c189f42 Mon Sep 17 00:00:00 2001 From: krmanik <12841290+krmanik@users.noreply.github.com> Date: Fri, 2 Feb 2024 02:57:57 +0800 Subject: [PATCH 06/11] add localization tool for uploading messages.pot file and download translated po file --- tools/localization/.eslintrc.js | 20 + tools/localization/.gitignore | 110 + tools/localization/.prettierignore | 2 + tools/localization/.prettierrc | 6 + tools/localization/README.md | 69 + tools/localization/jest.config.js | 5 + tools/localization/package-lock.json | 6419 ++++++++++++++++++++++++++ tools/localization/package.json | 41 + tools/localization/src/constants.ts | 36 + tools/localization/src/download.ts | 83 + tools/localization/src/index.ts | 57 + tools/localization/src/update.ts | 86 + tools/localization/src/upload.ts | 93 + tools/localization/tsconfig.json | 105 + tools/localization/yarn.lock | 3728 +++++++++++++++ 15 files changed, 10860 insertions(+) create mode 100644 tools/localization/.eslintrc.js create mode 100644 tools/localization/.gitignore create mode 100644 tools/localization/.prettierignore create mode 100644 tools/localization/.prettierrc create mode 100644 tools/localization/README.md create mode 100644 tools/localization/jest.config.js create mode 100644 tools/localization/package-lock.json create mode 100644 tools/localization/package.json create mode 100644 tools/localization/src/constants.ts create mode 100644 tools/localization/src/download.ts create mode 100644 tools/localization/src/index.ts create mode 100644 tools/localization/src/update.ts create mode 100644 tools/localization/src/upload.ts create mode 100644 tools/localization/tsconfig.json create mode 100644 tools/localization/yarn.lock diff --git a/tools/localization/.eslintrc.js b/tools/localization/.eslintrc.js new file mode 100644 index 0000000..d3dd495 --- /dev/null +++ b/tools/localization/.eslintrc.js @@ -0,0 +1,20 @@ +module.exports = { + env: { + es2021: true, + node: true, + }, + extends: [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "prettier", + ], + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaVersion: "latest", + sourceType: "module", + }, + plugins: ["@typescript-eslint"], + rules: { + "no-useless-escape": 0, + }, +}; diff --git a/tools/localization/.gitignore b/tools/localization/.gitignore new file mode 100644 index 0000000..70fd210 --- /dev/null +++ b/tools/localization/.gitignore @@ -0,0 +1,110 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# ignore downloaded zip file +ankidroiddocs.zip + +# translation extract dir +temp_dir \ No newline at end of file diff --git a/tools/localization/.prettierignore b/tools/localization/.prettierignore new file mode 100644 index 0000000..db4c6d9 --- /dev/null +++ b/tools/localization/.prettierignore @@ -0,0 +1,2 @@ +dist +node_modules \ No newline at end of file diff --git a/tools/localization/.prettierrc b/tools/localization/.prettierrc new file mode 100644 index 0000000..4f93aae --- /dev/null +++ b/tools/localization/.prettierrc @@ -0,0 +1,6 @@ +{ + "trailingComma": "all", + "printWidth": 88, + "tabWidth": 4, + "semi": true +} diff --git a/tools/localization/README.md b/tools/localization/README.md new file mode 100644 index 0000000..006d048 --- /dev/null +++ b/tools/localization/README.md @@ -0,0 +1,69 @@ +# Localization Tool + +This project provides a localization tool built with Yarn, built specifically to interact with the crowdin API via their javascript API client + +Its purpose is to provide a way to upload our English-language localization files to crowdin so that translators may do their work, and then to download that translation work and faithfully copy it into the non-English Android resource locations. + +## Getting Started + +Follow these steps to set up and run the localization tool. + +```bash +# Move to the proper directory +cd ./tools/localization +# Install the javascript dependencies +yarn +# Build the project so it is ready to run +yarn build +``` + +## Commands + +The following commands are available. Run them from the `./tools/localization` directory: + +### Upload + +Uploads English `po/messages.pot` files to Crowdin. + +> yarn start upload + +### Download + +Builds and downloads all translations from Crowdin. + +> yarn start download + +### Extract + +Extracts files from `ankidroiddocs.zip` into an internal staging area + +> yarn start extract + +### Update + +Updates the files from the extracted `ankidroiddocs.zip` file by processing them lightly (adding copyright information, fixing some common errors, etc), then copying them into the correct Android resource folders for the translated languages + +> yarn start update + +## Build / Execution Notes + +The project is implemented in typescript, which must be transpiled into javascript before it may be executed by the node interpreter. + +To transpile the project run: + +> yarn build + +...or alternatively if you are actively developing the project, you may wish to have the code transpiled for testing on any change, this is possible with + +> yarn dev + +...which starts the `tsc` typescript compiler in `--watch` mode + +After building the project, you may use the `package.json` run scripts, or the following commands can also be used if you want to execute the transpiled scripts directly: + +```bash +node .\dist\index.js upload +node .\dist\index.js download +node .\dist\index.js extract +node .\dist\index.js update +``` diff --git a/tools/localization/jest.config.js b/tools/localization/jest.config.js new file mode 100644 index 0000000..319b922 --- /dev/null +++ b/tools/localization/jest.config.js @@ -0,0 +1,5 @@ +/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ +module.exports = { + preset: "ts-jest", + testEnvironment: "node", +}; diff --git a/tools/localization/package-lock.json b/tools/localization/package-lock.json new file mode 100644 index 0000000..d42417a --- /dev/null +++ b/tools/localization/package-lock.json @@ -0,0 +1,6419 @@ +{ + "name": "ankidroid-localization", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ankidroid-localization", + "version": "1.0.0", + "license": "GPL-3.0", + "dependencies": { + "@crowdin/crowdin-api-client": "^1.28.0", + "@types/node": "^20.9.4", + "axios": "^1.6.2", + "dotenv": "^16.3.1", + "extract-zip": "^2.0.1", + "typescript": "^5.3.2" + }, + "devDependencies": { + "@types/jest": "^29.5.10", + "@typescript-eslint/eslint-plugin": "^6.12.0", + "@typescript-eslint/parser": "^6.12.0", + "eslint": "^8.54.0", + "eslint-config-prettier": "^9.0.0", + "eslint-config-standard": "^17.1.0", + "eslint-plugin-import": "^2.29.0", + "eslint-plugin-n": "^16.3.1", + "eslint-plugin-promise": "^6.1.1", + "jest": "^29.7.0", + "prettier": "^3.1.0", + "ts-jest": "^29.1.1", + "ts-node": "^10.9.1" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", + "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", + "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", + "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.3", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.3", + "@babel/types": "^7.23.3", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", + "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.4", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz", + "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.4", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", + "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", + "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.4", + "@babel/generator": "^7.23.4", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.4", + "@babel/types": "^7.23.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", + "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@crowdin/crowdin-api-client": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@crowdin/crowdin-api-client/-/crowdin-api-client-1.28.0.tgz", + "integrity": "sha512-6TCZ8oQBTQAWGCPIfa5Z+4149CeObqSOaGoo4hBTzayq6tZ25BdNElKbYn35VXyrmxaSrHCEJURfIlKLvzWr2g==", + "dependencies": { + "axios": "^1" + }, + "engines": { + "node": ">=12.9.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", + "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", + "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.10", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.10.tgz", + "integrity": "sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.9.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.4.tgz", + "integrity": "sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.12.0.tgz", + "integrity": "sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.12.0", + "@typescript-eslint/type-utils": "6.12.0", + "@typescript-eslint/utils": "6.12.0", + "@typescript-eslint/visitor-keys": "6.12.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.12.0.tgz", + "integrity": "sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.12.0", + "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/typescript-estree": "6.12.0", + "@typescript-eslint/visitor-keys": "6.12.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.12.0.tgz", + "integrity": "sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/visitor-keys": "6.12.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.12.0.tgz", + "integrity": "sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.12.0", + "@typescript-eslint/utils": "6.12.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.12.0.tgz", + "integrity": "sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.12.0.tgz", + "integrity": "sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/visitor-keys": "6.12.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.12.0.tgz", + "integrity": "sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.12.0", + "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/typescript-estree": "6.12.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.12.0.tgz", + "integrity": "sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.12.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", + "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001564", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz", + "integrity": "sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.592", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.592.tgz", + "integrity": "sha512-D3NOkROIlF+d5ixnz7pAf3Lu/AuWpd6AYgI9O67GQXMXTcCP1gJQRotOq35eQy5Sb4hez33XH1YdTtILA7Udww==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", + "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.54.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-compat-utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", + "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-config-standard": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-promise": "^6.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-es-x": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.4.0.tgz", + "integrity": "sha512-WJa3RhYzBtl8I37ebY9p76s61UhZyi4KaFOnX2A5r32RPazkXj5yoT6PGnD02dhwzEUj0KwsUdqfKDd/OuvGsw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.6.0", + "eslint-compat-utils": "^0.1.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=8" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", + "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-n": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.3.1.tgz", + "integrity": "sha512-w46eDIkxQ2FaTHcey7G40eD+FhTXOdKudDXPUO2n9WNcslze/i/HT2qJ3GXjHngYSGDISIgPNhwGtgoix4zeOw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "builtins": "^5.0.1", + "eslint-plugin-es-x": "^7.1.0", + "get-tsconfig": "^4.7.0", + "ignore": "^5.2.4", + "is-builtin-module": "^3.2.1", + "is-core-module": "^2.12.1", + "minimatch": "^3.1.2", + "resolve": "^1.22.2", + "semver": "^7.5.3" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", + "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-jest": { + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", + "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/tools/localization/package.json b/tools/localization/package.json new file mode 100644 index 0000000..d7fe2c9 --- /dev/null +++ b/tools/localization/package.json @@ -0,0 +1,41 @@ +{ + "name": "ankidroid-localization", + "version": "1.0.0", + "description": "Extract localization for AnkiDroid using Crowdin JS client api", + "main": "index.ts", + "private": true, + "scripts": { + "build": "tsc", + "start": "node ./dist/index.js", + "dev": "tsc --watch", + "format": "npx prettier --write .", + "lint": "eslint src/ --ext .js,.jsx,.ts,.tsx --max-warnings=0", + "test": "jest --passWithNoTests" + }, + "repository": "https://github.com/ankidroid/Anki-Android", + "author": "AnkiDroid Open Source Team", + "license": "GPL-3.0", + "dependencies": { + "@crowdin/crowdin-api-client": "^1.28.0", + "@types/node": "^20.9.4", + "axios": "^1.6.2", + "dotenv": "^16.3.1", + "extract-zip": "^2.0.1", + "typescript": "^5.3.2" + }, + "devDependencies": { + "@types/jest": "^29.5.10", + "@typescript-eslint/eslint-plugin": "^6.12.0", + "@typescript-eslint/parser": "^6.12.0", + "eslint": "^8.54.0", + "eslint-config-prettier": "^9.0.0", + "eslint-config-standard": "^17.1.0", + "eslint-plugin-import": "^2.29.0", + "eslint-plugin-n": "^16.3.1", + "eslint-plugin-promise": "^6.1.1", + "jest": "^29.7.0", + "prettier": "^3.1.0", + "ts-jest": "^29.1.1", + "ts-node": "^10.9.1" + } +} diff --git a/tools/localization/src/constants.ts b/tools/localization/src/constants.ts new file mode 100644 index 0000000..2f0c708 --- /dev/null +++ b/tools/localization/src/constants.ts @@ -0,0 +1,36 @@ +/** + * @author + * AnkiDroid Open Source Team + * + * @license + * Copyright (c) AnkiDroid. All rights reserved. + * Licensed under the GPL-3.0 license. See LICENSE file in the project root for details. + */ + +import path from "path"; +import { Credentials } from "@crowdin/crowdin-api-client"; +import { createDirIfNotExisting } from "./update"; + +import dotenv from "dotenv"; +dotenv.config({ path: path.join(__dirname, "../.env") }); + +const CROWDIN_APIv2_PAT = process.env.CROWDIN_APIv2_PAT ?? ""; + +// credentials +export const credentialsConst: Credentials = { + token: CROWDIN_APIv2_PAT, +}; + +export const PROJECT_ID = 645072; +export const TITLE_STR = "AnkiDroid Manual"; +export const poDirectory = path.join(__dirname, "../../../po"); +export const messagesPotFile = path.join(poDirectory, "messages.pot"); + +export const TEMP_DIR = path.join(__dirname, "../temp_dir"); +createDirIfNotExisting(TEMP_DIR); + +export const LANGUAGES = [ + "ar", + "ja", + "zh-CN", +]; diff --git a/tools/localization/src/download.ts b/tools/localization/src/download.ts new file mode 100644 index 0000000..0f42d08 --- /dev/null +++ b/tools/localization/src/download.ts @@ -0,0 +1,83 @@ +/** + * @author + * AnkiDroid Open Source Team + * + * @license + * Copyright (c) AnkiDroid. All rights reserved. + * Licensed under the GPL-3.0 license. See LICENSE file in the project root for details. + * + * @description + * buildAndDownload() will build zip file on Crowdin server and download it as ankidroiddocs.zip file. + * It's expected to be called through 'yarn start download'. + * + * extractZip() will extract downloaded ankidroiddocs.zip file. + * It's expected to be called through 'yarn start extract'. + */ + +import fs from "fs"; +import axios from "axios"; +import crowdin from "@crowdin/crowdin-api-client"; +import { PROJECT_ID, credentialsConst } from "./constants"; +import extract from "extract-zip"; + +// initialization of crowdin client +const { translationsApi } = new crowdin(credentialsConst); + +/** + * Build ankidroid.zip file on Crowdin server and download it + */ +export async function buildAndDownload() { + try { + // build + console.log("Sending project build request..."); + const buildId = await translationsApi.buildProject(PROJECT_ID); + console.log("Build request sent."); + + // run it for every 10 seconds + const buildProgress = setInterval(async () => { + console.log("Fetching build status..."); + const progress = await translationsApi.checkBuildStatus( + PROJECT_ID, + buildId.data.id, + ); + console.log("Build progress ", progress.data.progress); + + // if project is built, then clear the interval and download the built project files + if (progress.data.progress === 100 && progress.data.status === "finished") { + clearInterval(buildProgress); + console.log("ZIP Built."); + + // download + console.log("Downloading Crowdin file"); + const downloadLink = await translationsApi.downloadTranslations( + PROJECT_ID, + buildId.data.id, + ); + + axios({ + method: "get", + url: downloadLink.data.url, + responseType: "stream", + }).then(function (response) { + response.data.pipe(fs.createWriteStream("ankidroiddocs.zip")); + }); + } + }, 10_000); + } catch (error) { + console.error(error); + } +} + +/** + * Extract the ankidroid.zip file to temp dir + * @param source ankidroid.zip file path + * @param target extract dir path + */ +export async function extractZip(source: string, target: string) { + try { + await extract(source, { dir: target }); + console.log("Extraction complete"); + } catch (err) { + console.log(err); + } +} diff --git a/tools/localization/src/index.ts b/tools/localization/src/index.ts new file mode 100644 index 0000000..e469f47 --- /dev/null +++ b/tools/localization/src/index.ts @@ -0,0 +1,57 @@ +/** + * @author + * AnkiDroid Open Source Team + * + * @license + * Copyright (c) AnkiDroid. All rights reserved. + * Licensed under the GPL-3.0 license. See LICENSE file in the project root for details. + * + * @description + * For calling functions defined in other files. + * upload + * upload English language source files to crowdin + * + * download + * build and download target language files from crowdin + * + * extract + * extract ankidroiddocs.zip to temp_dir + * + * update + * copy latest file from temp_dir to po dir + */ + +import { uploadI18nFiles } from "./upload"; +import { buildAndDownload, extractZip } from "./download"; +import { updateI18nFiles } from "./update"; +import { TEMP_DIR } from "./constants"; + +process.argv.forEach(function (value) { + switch (value) { + case "upload": + console.log("uploading source strings to crowdin..."); + uploadI18nFiles(); + break; + + case "download": + console.log( + "requesting fresh translation build and downloading from crowdin...", + ); + buildAndDownload(); + break; + + case "extract": + console.log( + "extracting downloaded translation bundle to temporary directory...", + ); + extractZip("ankidroiddocs.zip", TEMP_DIR); + break; + + case "update": + console.log( + "Copying downloaded translations to po directory", + ); + updateI18nFiles(); + break; + } +}); diff --git a/tools/localization/src/update.ts b/tools/localization/src/update.ts new file mode 100644 index 0000000..b1e676d --- /dev/null +++ b/tools/localization/src/update.ts @@ -0,0 +1,86 @@ +/** + * @author + * AnkiDroid Open Source Team + * + * @license + * Copyright (c) AnkiDroid. All rights reserved. + * Licensed under the GPL-3.0 license. See LICENSE file in the project root for details. + * + * @description + * updateI18nFiles() to update files in AnkiDroid/src/main/res/values/ with downloaded files from crowdin. + * The downloaded file needs to extract first with 'yarn start extract'. + * It's expected to be called through 'yarn start update'. + */ + +import fs from "fs"; +import { + LANGUAGES, + TEMP_DIR, + poDirectory, +} from "./constants"; + +let anyError = false; + +/** + * Create language resource directory in res/value dir + * + * @param directory name of the directory + */ +export function createDirIfNotExisting(directory: string) { + if (!fs.existsSync(directory)) { + fs.mkdirSync(directory); + } +} + +/** + * For existing po files in po dir for each languages + * + * @param poDirectory po directory + * @param translatedContent content of target language po file + * @param language language code + * @returns boolean + */ +async function update( + poDirectory: string, + translatedContent: string, + language: string, +): Promise { + + fs.writeFileSync( + poDirectory + "/" + language + ".po", + translatedContent, + ); + + return true; +} + +/** + * Update translated I18n files in po/ dir + */ +export async function updateI18nFiles() { + + for (const language of LANGUAGES) { + + console.log(`\nCopying language files from temp_dir/${language}/messages-${language}.po to po/${language}.po`); + + const file = `messages-${language}.po`; + + const translatedContent = fs.readFileSync( + `${TEMP_DIR}/${language}/${file}`, + "utf-8", + ); + + anyError = !(await update( + poDirectory, + translatedContent, + language, + )); + + if (anyError) { + console.error( + "At least one file of the last handled language contains an error.", + ); + anyError = true; + } + } +} diff --git a/tools/localization/src/upload.ts b/tools/localization/src/upload.ts new file mode 100644 index 0000000..bd9576d --- /dev/null +++ b/tools/localization/src/upload.ts @@ -0,0 +1,93 @@ +/** + * @author + * AnkiDroid Open Source Team + * + * @license + * Copyright (c) AnkiDroid. All rights reserved. + * Licensed under the GPL-3.0 license. See LICENSE file in the project root for details. + * + * @description + * uploadI18nFiles() to upload current version of English strings from po/messages.pot to crowdin. + * It's expected to be called through yarn start upload + */ + +import fs from "fs"; +import crowdin, { ResponseList, SourceFilesModel } from "@crowdin/crowdin-api-client"; +import { + PROJECT_ID, + credentialsConst, + messagesPotFile, +} from "./constants"; + +// initialization of crowdin client +const { uploadStorageApi, sourceFilesApi } = new crowdin(credentialsConst); + +/** + * Upload English source files to Crowdin + */ +export async function uploadI18nFiles() { + const files = await sourceFilesApi.listProjectFiles(PROJECT_ID); + + try { + // upload messages.pot file + const messagesPot = fs.readFileSync(messagesPotFile, "utf8"); + const messagesPotId = idOfFileOrNull("messages.pot", files); + if (messagesPotId) { + console.log("Updating messages.pot"); + await updateFile(messagesPotId, "messages.pot", messagesPot); + } else { + console.log("Creating messages.pot"); + await createFile("messages.pot", messagesPot); + } + } catch (error) { + console.error(error); + } +} + +/** + * Allow to upload a new file for the first time on crowdin + * + * @param fileName name of the file + * @param fileContent file conten + */ +async function createFile(fileName: string, fileContent: string) { + const storage = await uploadStorageApi.addStorage(fileName, fileContent); + const file = await sourceFilesApi.createFile(PROJECT_ID, { + name: fileName, + title: fileName, + storageId: storage.data.id, + type: "auto", + }); + console.log(file, storage.data.id); +} + +/** + * Update file with txt, xml content to translate + * + * @param id storage id (on Crowdin) for the file + * @param fileName name of the file + * @param fileContent file contents + */ +async function updateFile(id: number, fileName: string, fileContent: string) { + const storage = await uploadStorageApi.addStorage(fileName, fileContent); + const file = await sourceFilesApi.updateOrRestoreFile(PROJECT_ID, id, { + storageId: storage.data.id, + }); + console.log(file, storage.data.id); +} + +/** + * check if file exists on crowdin, if exist then return id + * + * @param fileName name of the file + * @param files list of files for current project on Crowdin with ids, names ... + * @returns id if filename stored on Crowdin else null + */ +function idOfFileOrNull(fileName: string, files: ResponseList) { + for (const file of files.data) { + if (file.data.name === fileName) { + return file.data.id; + } + } + return null; +} diff --git a/tools/localization/tsconfig.json b/tools/localization/tsconfig.json new file mode 100644 index 0000000..e48ebc3 --- /dev/null +++ b/tools/localization/tsconfig.json @@ -0,0 +1,105 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + "lib": [ + "es2019" + ] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs" /* Specify what module code is generated. */, + "rootDir": "src" /* Specify the root folder within your source files. */, + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./dist" /* Specify an output folder for all emitted files. */, + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + "noImplicitAny": true /* Enable error reporting for expressions and declarations with an implied 'any' type. */, + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/tools/localization/yarn.lock b/tools/localization/yarn.lock new file mode 100644 index 0000000..3e7ba85 --- /dev/null +++ b/tools/localization/yarn.lock @@ -0,0 +1,3728 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz" + integrity sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + +"@babel/compat-data@^7.22.9": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz" + integrity sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz" + integrity sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.3" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.3" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.3" + "@babel/types" "^7.23.3" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.23.3", "@babel/generator@^7.23.4", "@babel/generator@^7.7.2": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz" + integrity sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ== + dependencies: + "@babel/types" "^7.23.4" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + +"@babel/helpers@^7.23.2": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz" + integrity sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.4" + "@babel/types" "^7.23.4" + +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.3", "@babel/parser@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz" + integrity sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz" + integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/template@^7.22.15", "@babel/template@^7.3.3": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.23.3", "@babel/traverse@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz" + integrity sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg== + dependencies: + "@babel/code-frame" "^7.23.4" + "@babel/generator" "^7.23.4" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.4" + "@babel/types" "^7.23.4" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.23.4", "@babel/types@^7.3.3": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz" + integrity sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@crowdin/crowdin-api-client@^1.28.0": + version "1.28.0" + resolved "https://registry.npmjs.org/@crowdin/crowdin-api-client/-/crowdin-api-client-1.28.0.tgz" + integrity sha512-6TCZ8oQBTQAWGCPIfa5Z+4149CeObqSOaGoo4hBTzayq6tZ25BdNElKbYn35VXyrmxaSrHCEJURfIlKLvzWr2g== + dependencies: + axios "^1" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.0", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.3": + version "2.1.3" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz" + integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.54.0": + version "8.54.0" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz" + integrity sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ== + +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== + dependencies: + "@humanwhocodes/object-schema" "^2.0.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== + dependencies: + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== + dependencies: + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.20" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz" + integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/babel__core@^7.1.14": + version "7.20.5" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.7" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz" + integrity sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.4" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz" + integrity sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA== + dependencies: + "@babel/types" "^7.20.7" + +"@types/graceful-fs@^4.1.3": + version "4.1.9" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.6" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^29.5.10": + version "29.5.10" + resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.10.tgz" + integrity sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/json-schema@^7.0.12": + version "7.0.15" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/node@*", "@types/node@^20.9.4": + version "20.9.4" + resolved "https://registry.npmjs.org/@types/node/-/node-20.9.4.tgz" + integrity sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA== + dependencies: + undici-types "~5.26.4" + +"@types/semver@^7.5.0": + version "7.5.6" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz" + integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.8": + version "17.0.32" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + dependencies: + "@types/yargs-parser" "*" + +"@types/yauzl@^2.9.1": + version "2.10.3" + resolved "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz" + integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== + dependencies: + "@types/node" "*" + +"@typescript-eslint/eslint-plugin@^6.12.0": + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.12.0.tgz" + integrity sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.12.0" + "@typescript-eslint/type-utils" "6.12.0" + "@typescript-eslint/utils" "6.12.0" + "@typescript-eslint/visitor-keys" "6.12.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@^6.12.0": + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.12.0.tgz" + integrity sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg== + dependencies: + "@typescript-eslint/scope-manager" "6.12.0" + "@typescript-eslint/types" "6.12.0" + "@typescript-eslint/typescript-estree" "6.12.0" + "@typescript-eslint/visitor-keys" "6.12.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@6.12.0": + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.12.0.tgz" + integrity sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw== + dependencies: + "@typescript-eslint/types" "6.12.0" + "@typescript-eslint/visitor-keys" "6.12.0" + +"@typescript-eslint/type-utils@6.12.0": + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.12.0.tgz" + integrity sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng== + dependencies: + "@typescript-eslint/typescript-estree" "6.12.0" + "@typescript-eslint/utils" "6.12.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@6.12.0": + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.12.0.tgz" + integrity sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q== + +"@typescript-eslint/typescript-estree@6.12.0": + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.12.0.tgz" + integrity sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw== + dependencies: + "@typescript-eslint/types" "6.12.0" + "@typescript-eslint/visitor-keys" "6.12.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.12.0": + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.12.0.tgz" + integrity sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.12.0" + "@typescript-eslint/types" "6.12.0" + "@typescript-eslint/typescript-estree" "6.12.0" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@6.12.0": + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.12.0.tgz" + integrity sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw== + dependencies: + "@typescript-eslint/types" "6.12.0" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.3.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz" + integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA== + +acorn@^8.4.1, acorn@^8.9.0: + version "8.11.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.findlastindex@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +axios@^1, axios@^1.6.2: + version "1.6.2" + resolved "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz" + integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.21.9: + version "4.22.1" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== + dependencies: + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +builtin-modules@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +builtins@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz" + integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== + dependencies: + semver "^7.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001541: + version "1.0.30001564" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz" + integrity sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +cjs-module-lexer@^1.0.0: + version "1.2.3" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +dedent@^1.0.0: + version "1.5.1" + resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz" + integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.1" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dotenv@^16.3.1: + version "16.3.1" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== + +electron-to-chromium@^1.4.535: + version "1.4.592" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.592.tgz" + integrity sha512-D3NOkROIlF+d5ixnz7pAf3Lu/AuWpd6AYgI9O67GQXMXTcCP1gJQRotOq35eQy5Sb4hez33XH1YdTtILA7Udww== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.5" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.13" + +es-set-tostringtag@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== + dependencies: + get-intrinsic "^1.2.2" + has-tostringtag "^1.0.0" + hasown "^2.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-compat-utils@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz" + integrity sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg== + +eslint-config-prettier@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz" + integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== + +eslint-config-standard@^17.1.0: + version "17.1.0" + resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz" + integrity sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q== + +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" + +eslint-plugin-es-x@^7.1.0: + version "7.4.0" + resolved "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.4.0.tgz" + integrity sha512-WJa3RhYzBtl8I37ebY9p76s61UhZyi4KaFOnX2A5r32RPazkXj5yoT6PGnD02dhwzEUj0KwsUdqfKDd/OuvGsw== + dependencies: + "@eslint-community/eslint-utils" "^4.1.2" + "@eslint-community/regexpp" "^4.6.0" + eslint-compat-utils "^0.1.2" + +eslint-plugin-import@^2.29.0: + version "2.29.0" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz" + integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.14.2" + +eslint-plugin-n@^16.3.1: + version "16.3.1" + resolved "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.3.1.tgz" + integrity sha512-w46eDIkxQ2FaTHcey7G40eD+FhTXOdKudDXPUO2n9WNcslze/i/HT2qJ3GXjHngYSGDISIgPNhwGtgoix4zeOw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + builtins "^5.0.1" + eslint-plugin-es-x "^7.1.0" + get-tsconfig "^4.7.0" + ignore "^5.2.4" + is-builtin-module "^3.2.1" + is-core-module "^2.12.1" + minimatch "^3.1.2" + resolve "^1.22.2" + semver "^7.5.3" + +eslint-plugin-promise@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz" + integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.54.0: + version "8.54.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz" + integrity sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.3" + "@eslint/js" "8.54.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^29.0.0, expect@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +extract-zip@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + +follow-redirects@^1.15.0: + version "1.15.3" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-tsconfig@^4.7.0: + version "4.7.2" + resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz" + integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== + dependencies: + resolve-pkg-maps "^1.0.0" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: + version "13.23.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== + dependencies: + get-intrinsic "^1.2.2" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.0" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz" + integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +internal-slot@^1.0.5: + version "1.0.6" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== + dependencies: + get-intrinsic "^1.2.2" + hasown "^2.0.0" + side-channel "^1.0.4" + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-builtin-module@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== + dependencies: + builtin-modules "^3.3.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.12.1, is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-instrument@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz" + integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.6" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz" + integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== + dependencies: + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" + +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^29.0.0, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== + dependencies: + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" + +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== + dependencies: + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" + import-local "^3.0.2" + jest-cli "^29.7.0" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-error@1.x, make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.fromentries@^2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.groupby@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + +object.values@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz" + integrity sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw== + +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +pure-rand@^6.0.0: + version "6.0.4" + resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz" + integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + +resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.0.0, semver@^7.5.3, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + +ts-jest@^29.1.1: + version "29.1.1" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz" + integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "4.x" + make-error "1.x" + semver "^7.5.3" + yargs-parser "^21.0.1" + +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths@^3.14.2: + version "3.14.2" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typescript@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz" + integrity sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-to-istanbul@^9.0.1: + version "9.2.0" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz" + integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-typed-array@^1.1.11, which-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^21.0.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.3.1: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 602b7b3250841caa6f899b59a58f6fb94fc472bc Mon Sep 17 00:00:00 2001 From: krmanik <12841290+krmanik@users.noreply.github.com> Date: Fri, 2 Feb 2024 02:59:19 +0800 Subject: [PATCH 07/11] github action workflows for sync translation, build, test and publish docs --- .github/typos.toml | 16 +++ .github/workflows/build.sh | 32 +++++ .github/workflows/build.yml | 102 ++++++++++++++ .github/workflows/check-msgid-changes.py | 89 ++++++++++++ .github/workflows/check-msgid-changes.yml | 21 +++ .github/workflows/install-mdbook/action.yml | 23 ++++ .github/workflows/publish.yml | 65 +++++++++ .github/workflows/setup-rust-cache/action.yml | 9 ++ .github/workflows/sync_translations.yml | 127 ++++++++++++++++++ 9 files changed, 484 insertions(+) create mode 100644 .github/typos.toml create mode 100644 .github/workflows/build.sh create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/check-msgid-changes.py create mode 100644 .github/workflows/check-msgid-changes.yml create mode 100644 .github/workflows/install-mdbook/action.yml create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/setup-rust-cache/action.yml create mode 100644 .github/workflows/sync_translations.yml diff --git a/.github/typos.toml b/.github/typos.toml new file mode 100644 index 0000000..8e9b7e3 --- /dev/null +++ b/.github/typos.toml @@ -0,0 +1,16 @@ +[default.extend-identifiers] +# False positives. +mis = "mis" +MIS = "MIS" +inout = "inout" +BARs = "BARs" + +[type.po] +# Localized content should not be checked for typos. English +# in these files should be validated manually. +extend-glob = ["*.po"] +check-file = false + +[files] +# Typos in third party packages should be fixed upstream. +extend-exclude = ["theme/*", "tools/*"] \ No newline at end of file diff --git a/.github/workflows/build.sh b/.github/workflows/build.sh new file mode 100644 index 0000000..f8598eb --- /dev/null +++ b/.github/workflows/build.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +# Usage: build.sh +# +# Build the docs as of the date specified specified in the +# POT-Creation-Date header of po/$book_lang.po. The output can be +# found in $dest_dir. +# +# The src/ directory are left in a dirty state so +# you can run `mdbook test` and other commands afterwards. + +book_lang=${1:?"Usage: $0 "} +dest_dir=${2:?"Usage: $0 "} + +if [ "$book_lang" = "en" ]; then + echo "::group::Building English docs" +else + pot_creation_date=$(grep --max-count 1 '^"POT-Creation-Date:' "po/$book_lang.po" | sed -E 's/".*: (.*)\\n"/\1/') + pot_creation_date=${pot_creation_date:-now} + echo "::group::Building $book_lang translation as of $pot_creation_date" + + # Set language and adjust site URL. Clear the redirects since they are + # in sync with the source files, not the translation. + export MDBOOK_BOOK__LANGUAGE=$book_lang + export MDBOOK_OUTPUT__HTML__SITE_URL=/ankidroiddocs/$book_lang/ + export MDBOOK_OUTPUT__HTML__REDIRECT='{}' +fi + +mdbook build -d "$dest_dir" + +echo "::endgroup::" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..f34620a --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,102 @@ +name: Test + +on: + pull_request: + push: + branches: + - main + +env: + CARGO_TERM_COLOR: always + +jobs: + format: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install formatting dependencies + run: | + sudo apt update + sudo apt install gettext yapf3 + + - name: Check formatting + uses: dprint/check@v2.2 + + typos: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Check for typos + uses: crate-ci/typos@v1.17.2 + with: + config: ./.github/typos.toml + + find-languages: + runs-on: ubuntu-latest + outputs: + languages: ${{ steps.find-languages.outputs.languages }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Find languages + id: find-languages + shell: python + run: | + import os, json, pathlib + languages = ["en"] + [p.stem for p in pathlib.Path("po").iterdir() if p.suffix == ".po"] + github_output = open(os.environ["GITHUB_OUTPUT"], "a") + github_output.write("languages=") + json.dump(sorted(languages), github_output) + + build: + runs-on: ubuntu-latest + needs: + - find-languages + strategy: + matrix: + language: ${{ fromJSON(needs.find-languages.outputs.languages) }} + fail-fast: false + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 # We need the full history for build.sh below. + + - name: Setup Rust cache + uses: ./.github/workflows/setup-rust-cache + + - name: Install Gettext + run: | + sudo apt update + sudo apt install gettext + + - name: Install mdbook + uses: ./.github/workflows/install-mdbook + + - name: Test format of ${{ matrix.language }} translation + if: matrix.language != 'en' + run: msgfmt --statistics -o /dev/null po/${{ matrix.language }}.po + + - name: Test extracting English strings + if: matrix.language == 'en' + run: | + MDBOOK_OUTPUT='{"xgettext": {"pot-file": "messages.pot"}}' mdbook build -d po + msgfmt -o /dev/null --statistics po/messages.pot + + - name: Build ${{ matrix.language }} translation + run: | + chmod +x .github/workflows/build.sh + .github/workflows/build.sh ${{ matrix.language }} book/ankidroiddocs-${{ matrix.language }} + + # Upload the book now to retain it in case mdbook test fails. + - name: Upload book + uses: actions/upload-artifact@v4 + with: + name: ankidroiddocs-${{ matrix.language }} + path: book/ + diff --git a/.github/workflows/check-msgid-changes.py b/.github/workflows/check-msgid-changes.py new file mode 100644 index 0000000..5c8c8b2 --- /dev/null +++ b/.github/workflows/check-msgid-changes.py @@ -0,0 +1,89 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Find changed msgid fields without a change in POT-Creation-Date. + +When following the instructions in +https://github.com/google/comprehensive-rust/blob/main/TRANSLATIONS.md, +one of two things should happen: + +- The `msgid` fields change because `msgmerge --update` was used. This + will also update the POT-Creation-Date field since a new timestamp + is merged in from the messages.pot file. + +- Translations are added or updated. This should not change the + `msgid` fields: only the `msgstr` fields should change. If the PO + editor being used inadvertently changes the wrapping of both `msgid` + and `msgstr` fields, then `dprint fmt` can be used to normalize them + all. + +The code here detects if both of these happen at the same time: if one +or more `msgid` fields changed without a corresponding change to the +POT-Creation-Date field. If this happens, the translator should fix it +by running: + + dprint fmt + +Commit and push to the branch again. +""" + +import os + +# TODO: move the `git reset` from the action code to here. Infact, we +# should be able to determine this with read-only operations. + +# TODO: use Git plumbing commands instead of porcelain, see +# https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git.html. +for filename in os.popen("git diff --name-only").read().split(): + if not filename.endswith(".po"): + continue + + # If POT-Creation-Date has changed, then we assume that the commit + # is the result of `msgmerge --update`. It is expected that the + # `msgid` fields change when `msgmerge` is run, so there is + # nothing to check. + if "POT-Creation-Date" in os.popen( + f"git diff --unified=0 {filename}").read(): + print( + f"Assuming {filename} was changed automatically, skipping msgid check" + ) + continue + + changed_lines = { + i + 1 + for i, line in enumerate( + os.popen(f"git blame {filename}").readlines()) + if line.startswith("00000000") + } + + # Look for a changed line between `msgid` and `msgstr`. + saw_msgid = False + with open(filename, "r") as f: + line = f.readline() + line_number = 1 + + while line: + if line.startswith("msgid"): + saw_msgid = True + elif line.startswith("msgstr"): + saw_msgid = False + + if saw_msgid and line_number in changed_lines: + print(f"Changed msgid in file {filename}:{line_number}!") + print( + "Please read https://github.com/google/comprehensive-rust/blob/main/TRANSLATIONS.md#creating-and-updating-translations." + ) + exit(1) + + line_number += 1 + line = f.readline() diff --git a/.github/workflows/check-msgid-changes.yml b/.github/workflows/check-msgid-changes.yml new file mode 100644 index 0000000..0ec63ca --- /dev/null +++ b/.github/workflows/check-msgid-changes.yml @@ -0,0 +1,21 @@ +name: Prevent unintended msgid changes + +on: + pull_request: + paths: + - "po/*.po" + +jobs: + check-msgid-changes: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Reset git + run: git reset origin/main + + - name: Check po file changes + run: python3 .github/workflows/check-msgid-changes.py diff --git a/.github/workflows/install-mdbook/action.yml b/.github/workflows/install-mdbook/action.yml new file mode 100644 index 0000000..b81ac10 --- /dev/null +++ b/.github/workflows/install-mdbook/action.yml @@ -0,0 +1,23 @@ +name: Install mdbook and dependencies + +description: Install mdbook with the dependencies we need. + +runs: + using: composite + steps: + # The --locked flag is important for reproducible builds. + - name: Install mdbook + run: cargo install mdbook --locked --version 0.4.36 + shell: bash + + - name: Install mdbook-i18n-helpers + run: cargo install mdbook-i18n-helpers --locked --version 0.3.1 + shell: bash + + - name: Install mdbook-toc + run: cargo install mdbook-toc --locked --version 0.14.2 + shell: bash + + - name: Install mdbook-linkcheck + run: cargo install mdbook-linkcheck --locked --version 0.7.7 + shell: bash diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..859ec3e --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,65 @@ +name: Publish + +on: + push: + branches: + - main + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +# Allow one concurrent deployment +concurrency: + group: pages + cancel-in-progress: true + +env: + CARGO_TERM_COLOR: always + # Update the language picker in index.hbs to link new languages. + LANGUAGES: ar ja zh-CN + +jobs: + publish: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 # We need the full history for build.sh below. + + - name: Setup Rust cache + uses: ./.github/workflows/setup-rust-cache + + - name: Install mdbook + uses: ./.github/workflows/install-mdbook + + - name: Make executable + run: chmod +x .github/workflows/build.sh + + - name: Build course in English + run: .github/workflows/build.sh en book + + - name: Build all translations + run: | + for po_lang in ${{ env.LANGUAGES }}; do + .github/workflows/build.sh $po_lang book/$po_lang + mv book/$po_lang/html book/html/$po_lang + done + + - name: Setup Pages + uses: actions/configure-pages@v4 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: book/html + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/setup-rust-cache/action.yml b/.github/workflows/setup-rust-cache/action.yml new file mode 100644 index 0000000..f359ed3 --- /dev/null +++ b/.github/workflows/setup-rust-cache/action.yml @@ -0,0 +1,9 @@ +name: Setup Rust cache + +description: Configure the rust-cache workflow. + +runs: + using: composite + steps: + - name: Setup Rust cache + uses: Swatinem/rust-cache@v2 diff --git a/.github/workflows/sync_translations.yml b/.github/workflows/sync_translations.yml new file mode 100644 index 0000000..76e654e --- /dev/null +++ b/.github/workflows/sync_translations.yml @@ -0,0 +1,127 @@ +name: Sync Translations + +on: + workflow_dispatch: + +permissions: + contents: read + +jobs: + sync_translations: + permissions: + contents: write # for Git to git push + pull-requests: write # to create the PR with changes + name: 'Sync Translations with Crowdin' + timeout-minutes: 20 + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + with: + ref: 'main' + fetch-depth: 0 + + - name: Credential Prep + run: | + echo "CROWDIN_APIv2_PAT=${{ secrets.CROWDIN_APIv2_PAT }}" >> $GITHUB_ENV + shell: bash + + - name: GIT Setup + run: | + git config --global user.name 'AnkiDroid Translations' + git config --global user.email 'ankidroid@ankidroid.org' + git checkout -b i18n_sync + git reset --hard origin/main + shell: bash + + - uses: actions/setup-node@v4 + with: + node-version: 18 + + - name: Setup Rust cache + uses: ./.github/workflows/setup-rust-cache + + - name: Install mdbook + uses: ./.github/workflows/install-mdbook + + - name: Make executable + run: chmod +x .github/workflows/build.sh + + - name: Generate messages.pot for uploading to crowdin + run: | + MDBOOK_OUTPUT='{"xgettext": {"pot-file": "messages.pot", "granularity": 0}}' mdbook build -d po + + - name: Install dependencies and build + run: | + cd ./tools/localization + yarn + yarn build + + - name: Push translation sources to crowdin + run: | + cd ./tools/localization + yarn start upload + + - name: Pull translation updates from crowdin + run: | + cd ./tools/localization + yarn start download + + - name: Extract downloaded ankidroiddocs.zip file + run: | + cd ./tools/localization + yarn start extract + + - name: Update translation to ankidroiddocs po + run: | + cd ./tools/localization + yarn start update + + - name: Commit changes + run: | + git add po + git commit -am 'Updated strings from Crowdin' + git push --set-upstream origin +i18n_sync + echo "The results of the sync are on the i18n_sync branch, PR them from there for merge." + echo "https://github.com/ankidroid/ankidroiddocs/compare/i18n_sync?expand=1" + + - name: Check if there are strings changes + id: tr_check + run: | + git checkout i18n_sync + COMMITS_COUNT=`git rev-list --count HEAD ^main` + if [ "$COMMITS_COUNT" -gt 0 ]; then + echo "HAS_CHANGES=true" >> $GITHUB_OUTPUT + else + echo "HAS_CHANGES=false" >> $GITHUB_OUTPUT + fi + + - name: Create PR for strings changes if needed + if: ${{ steps.tr_check.outputs.HAS_CHANGES }} + uses: actions/github-script@v7 + with: + script: | + const now = new Date(); + // Date format used: YYYY/MM/DD HH:MM , UTC time(ex: 2023/01/13 08:38) + const formattedDate = + now.getUTCFullYear() + "/" + + ("0" + (now.getUTCMonth() + 1)).slice(-2) + "/" + + ("0" + now.getUTCDate()).slice(-2) + " " + + ("0" + now.getUTCHours()).slice(-2) + ":" + + ("0" + now.getUTCMinutes()).slice(-2); + try { + github.rest.pulls.create({ + owner: context.repo.owner, + repo: context.repo.repo, + title: "Updated strings from Crowdin " + formattedDate, + head: "i18n_sync", + base: "main", + body: "Contains the newest strings changes from Crowdin.", + maintainer_can_modify: true + }); + } catch(err) { + if (err.status === 422) { + console.log("A PR containing translations sync already exists!"); + } else { + throw err; + } + } \ No newline at end of file From 3a863cb3dcf9564cb912553838447ca240232ea1 Mon Sep 17 00:00:00 2001 From: krmanik <12841290+krmanik@users.noreply.github.com> Date: Fri, 2 Feb 2024 17:09:27 +0800 Subject: [PATCH 08/11] add inital language (ar,ja,ru,zh-CN) and implement tools to auto-update --- Readme.md | 100 + po/ar.po | 6445 +++++++++++++++++++++++++++ po/ja.po | 6445 +++++++++++++++++++++++++++ po/ru.po | 6445 +++++++++++++++++++++++++++ po/zh-CN.po | 6445 +++++++++++++++++++++++++++ theme/head.hbs | 8 + theme/index.hbs | 45 +- tools/localization/src/constants.ts | 6 - tools/localization/src/update.ts | 4 +- 9 files changed, 25918 insertions(+), 25 deletions(-) create mode 100644 Readme.md create mode 100644 po/ar.po create mode 100644 po/ja.po create mode 100644 po/ru.po create mode 100644 po/zh-CN.po create mode 100644 theme/head.hbs diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..18ae16b --- /dev/null +++ b/Readme.md @@ -0,0 +1,100 @@ +# ankidroiddocs + +The docs is built using a few tools: + +``` +mdbook +mdbook-toc +mdbook-linkcheck +mdbook-i18n-helpers +``` + +First install Rust by following the instructions on https://rustup.rs/. Then clone this repository: + +``` +git clone https://github.com/ankidroid/ankidroiddocs.git +cd ankidroiddocs +``` + +Then install these tools with: + +``` +cargo install mdbook +cargo install mdbook-toc +cargo install mdbook-linkcheck +cargo install mdbook-i18n-helpers +``` + +Run + +``` +mdbook serve +``` + +to start a web server with the course. You'll find the content on `http://localhost:3000`. You can use mdbook build to create a static version of the course in the book/ directory. To build any of the translated versions of the course, run +``` +MDBOOK_BOOK__LANGUAGE=xx mdbook build -d book/xx +``` +where xx is the ISO 639 language code (e.g. ja for the Japanese translation). + +# Translations of AnkiDroid Docs + +We use `crowdin.com` for AnkiDroid docs. + +## AnkiDroid docs translations on Crowdin: + +Translating is easy and fun: + +* Go to http://crowdin.net/project/ankidroiddocs +* Register, if you don't have an account yet +* Click on the flag of your language +* Click on a file (they are sorted by descending priority) +* Click on "Sort" +* Click on "Missing translation" +* Grey bullet=missing, Green bullet=done +* For each grey bullet, translate the English text to your language. + +## Add new language entry if not exists + +1. Contact AnkiDroid Org admin to add new language entry on Crowdin +2. Clone this repository +3. Open [theme/head.hbs](theme/head.hbs) file in text editor +4. Add language entry in head.hbs, for e.g. "ja": "日本語" + +```html + +``` +5. Commit changes and create pull request to ankidroiddocs +6. Update translations on Crowdin + +### Building a Translation + +To use the `po/xx.po` file for your output, run the following command: + +```shell +MDBOOK_BOOK__LANGUAGE=xx mdbook build -d book/xx +``` + +This will update the book's language to `xx`, it will make the `mdbook-gettext` +preprocessor become active and tell it to use the `po/xx.po` file, and finally +it will redirect the output to `book/xx`. + +### Serving a Translation + +Like normal, you can use `mdbook serve` to view your translation as you work on +it. You use the same command as with `mdbook build` above: + +```shell +MDBOOK_BOOK__LANGUAGE=xx mdbook serve -d book/xx +``` + +When you update the `po/xx.po` file, the translated book will automatically +reload. diff --git a/po/ar.po b/po/ar.po new file mode 100644 index 0000000..3b3cbf5 --- /dev/null +++ b/po/ar.po @@ -0,0 +1,6445 @@ +msgid "" +msgstr "" +"Project-Id-Version: ankidroiddocs\n" +"POT-Creation-Date: 2024-02-01T17:14:41Z\n" +"PO-Revision-Date: 2024-02-01 17:15\n" +"Last-Translator: \n" +"Language-Team: Arabic\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n" +"X-Crowdin-Project: ankidroiddocs\n" +"X-Crowdin-Project-ID: 645072\n" +"X-Crowdin-Language: ar\n" +"X-Crowdin-File: messages.pot\n" +"X-Crowdin-File-ID: 2\n" + +#: src/SUMMARY.md:1 +msgid "Summary" +msgstr "" + +#: src/SUMMARY.md:3 src/intro.md:1 src/intro.md:1 +msgid "Introduction" +msgstr "" + +#: src/SUMMARY.md:4 src/getting-started.md:1 +msgid "Getting started" +msgstr "" + +#: src/SUMMARY.md:6 src/deck-picker.md:1 +msgid "The Deck List" +msgstr "" + +#: src/SUMMARY.md:8 src/drawer.md:1 +msgid "Navigation Drawer" +msgstr "" + +#: src/SUMMARY.md:10 src/deck-overview.md:1 +msgid "Deck Overview Screen" +msgstr "" + +#: src/SUMMARY.md:12 src/reviewer.md:1 +msgid "Study Screen" +msgstr "" + +#: src/SUMMARY.md:14 src/adding-notes.md:1 +msgid "Add Note Screen" +msgstr "" + +#: src/SUMMARY.md:16 src/editing-notes.md:1 +msgid "Edit Note Screen" +msgstr "" + +#: src/SUMMARY.md:18 src/browser.md:1 +msgid "Finding/Searching/Browsing" +msgstr "" + +#: src/SUMMARY.md:20 src/filtered-deck.md:1 +msgid "Filtered Decks" +msgstr "" + +#: src/SUMMARY.md:22 src/importing/importing-anki-files.md:1 +msgid "Importing Anki Files" +msgstr "" + +#: src/SUMMARY.md:23 src/importing/importing-anki-databases.md:1 +msgid "Importing Anki Databases (.anki2)" +msgstr "" + +#: src/SUMMARY.md:25 src/exporting.md:1 +msgid "Exporting Anki Files" +msgstr "" + +#: src/SUMMARY.md:27 src/backups.md:1 +msgid "Automatic Backups" +msgstr "" + +#: src/SUMMARY.md:29 src/settings.md:1 +msgid "Preferences" +msgstr "" + +#: src/SUMMARY.md:31 src/gestures.md:1 +msgid "Gestures" +msgstr "" + +#: src/SUMMARY.md:33 src/note-formatting-toolbar.md:1 +msgid "Note Formatting Toolbar" +msgstr "" + +#: src/SUMMARY.md:35 src/keyboard-shortcuts.md:1 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/SUMMARY.md:37 src/rtl.md:1 +msgid "Using Right-To-Left Languages with AnkiDroid" +msgstr "" + +#: src/SUMMARY.md:39 src/anki-desktop.md:1 +msgid "Using Anki Desktop with AnkiDroid" +msgstr "" + +#: src/SUMMARY.md:41 src/ankiweb-conflicts.md:1 +msgid "Dealing with merge conflicts on AnkiWeb" +msgstr "" + +#: src/SUMMARY.md:43 src/advanced-features/intro.md:1 +msgid "Advanced Features" +msgstr "" + +#: src/SUMMARY.md:44 src/advanced-features/mathjax.md:1 +msgid "MathJax Support" +msgstr "" + +#: src/SUMMARY.md:45 src/advanced-features/reverse-cards.md:1 +msgid "Reverse Cards" +msgstr "" + +#: src/SUMMARY.md:46 src/advanced-features/custom-fonts.md:1 +msgid "Custom Fonts" +msgstr "" + +#: src/SUMMARY.md:47 src/advanced-features/customizing-card-layout.md:1 +msgid "Custom Card Layout" +msgstr "" + +#: src/SUMMARY.md:48 src/advanced-features/type-in-answer.md:1 +msgid "Type in the answer feature" +msgstr "" + +#: src/SUMMARY.md:49 src/gestures.md:146 +#: src/advanced-features/advanced-statistics.md:1 +msgid "Advanced Statistics" +msgstr "" + +#: src/SUMMARY.md:50 src/advanced-features/reminders.md:1 +msgid "Reminders" +msgstr "" + +#: src/SUMMARY.md:51 src/advanced-features/set-language-hint.md:1 +msgid "Automatic Language Selection" +msgstr "" + +#: src/SUMMARY.md:54 +msgid "Help & Supports" +msgstr "" + +#: src/SUMMARY.md:55 src/beta-testing.md:1 +msgid "Beta testing" +msgstr "" + +#: src/SUMMARY.md:56 src/help.md:33 src/contributing.md:1 +msgid "Contributing to AnkiDroid" +msgstr "" + +#: src/SUMMARY.md:57 +msgid "Changelog" +msgstr "" + +#: src/SUMMARY.md:58 +msgid "Version 2.15" +msgstr "" + +#: src/SUMMARY.md:59 +msgid "Version 2.14" +msgstr "" + +#: src/SUMMARY.md:60 +msgid "Version 2.13" +msgstr "" + +#: src/SUMMARY.md:61 +msgid "Version 2.12" +msgstr "" + +#: src/SUMMARY.md:62 +msgid "Version 2.11" +msgstr "" + +#: src/SUMMARY.md:63 +msgid "Version 2.10" +msgstr "" + +#: src/SUMMARY.md:64 +msgid "Version 2.9" +msgstr "" + +#: src/SUMMARY.md:65 +msgid "Version 2.8" +msgstr "" + +#: src/SUMMARY.md:66 +msgid "Version 2.7" +msgstr "" + +#: src/SUMMARY.md:67 +msgid "Version 2.6" +msgstr "" + +#: src/SUMMARY.md:68 +msgid "Version 2.5" +msgstr "" + +#: src/SUMMARY.md:69 +msgid "Version 2.4" +msgstr "" + +#: src/SUMMARY.md:70 +msgid "Version 2.3" +msgstr "" + +#: src/SUMMARY.md:71 +msgid "Version 2.2" +msgstr "" + +#: src/SUMMARY.md:72 +msgid "Version 2.1" +msgstr "" + +#: src/SUMMARY.md:73 +msgid "Version 2.0" +msgstr "" + +#: src/SUMMARY.md:74 src/changelog/v0.1-to-1.1.3.md:1 +msgid "Version 0.1 to 1.1.3" +msgstr "" + +#: src/intro.md:3 src/intro.md:3 +msgid "Thank you for using AnkiDroid, the Android client for the popular [Anki](http://ankisrs.net) spaced repetition system. " +msgstr "" + +#: src/intro.md:5 src/intro.md:5 +msgid "Anki is spaced repetition technique which is simple but highly effective. It helps you memorize things by automatically repeating them across increasing intervals based on your responses with no need for you to keep track of what to study or when to study it. You create notes (or download shared decks) with content you need to memorize, and the scheduler will make sure you see the content when you need to." +msgstr "" + +#: src/intro.md:7 src/intro.md:7 +msgid "AnkiDroid is intended to be used in conjunction with Anki on your computer. While it is possible to function without it, some tasks are either only possible with, or a lot more efficient with Anki Desktop. Furthermore, it is **strongly recommended** to at least read [`Key Concepts`](https://docs.ankiweb.net/getting-started.html#key-concepts) section of the main Anki manual to understand the terminology used here." +msgstr "" + +#: src/intro.md:9 src/intro.md:9 +msgid "If this manual doesn't contain what you are looking for, please check the [AnkiDroid Wiki](https://github.com/ankidroid/Anki-Android/wiki) for a list of changes, instructions for submitting bug reports and feature requests, a list of frequently asked questions, and much more." +msgstr "" + +#: src/getting-started.md:2 +msgid "To start using AnkiDroid, we need to add some cards to study. From the main screen, tapping the big blue plus button will allow you to either add a new **note** (i.e. create new flashcards), download shared decks (decks that other people have created and shared online), or create new empty decks." +msgstr "" + +#: src/getting-started.md:4 +msgid "Please watch this 5 minute [tutorial video](https://www.youtube.com/watch?v=F2K1gOSdIZA), which gives an introduction to adding, downloading, and studying cards in AnkiDroid. More detailed information can be found in the sections below." +msgstr "" + +#: src/getting-started.md:6 +msgid "If you are an existing user of Anki Desktop wishing to import your decks from the computer, you might like to skip straight to the [using AnkiDroid with Anki Desktop](anki-desktop.md#using-anki-desktop-with-ankidroid) section." +msgstr "" + +#: src/deck-picker.md:3 +msgid "[Add button](#add-button)" +msgstr "" + +#: src/deck-picker.md:4 +msgid "[Add](#add)" +msgstr "" + +#: src/deck-picker.md:5 +msgid "[Get shared decks](#get-shared-decks)" +msgstr "" + +#: src/deck-picker.md:6 +msgid "[Create deck](#create-deck)" +msgstr "" + +#: src/deck-picker.md:7 +msgid "[App Bar](#app-bar)" +msgstr "" + +#: src/deck-picker.md:8 +msgid "[Navigation menu button](#navigation-menu-button)" +msgstr "" + +#: src/deck-picker.md:9 +msgid "[Sync button](#sync-button)" +msgstr "" + +#: src/deck-picker.md:10 +msgid "[Overflow menu button](#overflow-menu-button)" +msgstr "" + +#: src/deck-picker.md:11 +msgid "[Studying a Deck](#studying-a-deck)" +msgstr "" + +#: src/deck-picker.md:12 +msgid "[Other Deck Actions](#other-deck-actions)" +msgstr "" + +#: src/deck-picker.md:13 +msgid "[Rename deck](#rename-deck)" +msgstr "" + +#: src/deck-picker.md:14 +msgid "[Deck options](#deck-options)" +msgstr "" + +#: src/deck-picker.md:15 +msgid "[Custom study](#custom-study)" +msgstr "" + +#: src/deck-picker.md:16 +msgid "[Delete deck](#delete-deck)" +msgstr "" + +#: src/deck-picker.md:17 +msgid "[Export deck](#export-deck)" +msgstr "" + +#: src/deck-picker.md:18 src/deck-overview.md:11 +msgid "[Unbury](#unbury)" +msgstr "" + +#: src/deck-picker.md:19 +msgid "[Rebuild / Empty](#rebuild--empty)" +msgstr "" + +#: src/deck-picker.md:20 +msgid "[Clickable areas on the decks](#clickable-areas-on-the-decks)" +msgstr "" + +#: src/deck-picker.md:21 +msgid "[Deck expander](#deck-expander)" +msgstr "" + +#: src/deck-picker.md:22 +msgid "[Deck name](#deck-name)" +msgstr "" + +#: src/deck-picker.md:23 +msgid "[Count buttons](#count-buttons)" +msgstr "" + +#: src/deck-picker.md:24 +msgid "[Advanced Actions](#advanced-actions)" +msgstr "" + +#: src/deck-picker.md:25 src/gestures.md:11 +msgid "[Undo](#undo)" +msgstr "" + +#: src/deck-picker.md:26 +msgid "[Check database](#check-database)" +msgstr "" + +#: src/deck-picker.md:27 +msgid "[Check media](#check-media)" +msgstr "" + +#: src/deck-picker.md:28 +msgid "[Empty cards](#empty-cards)" +msgstr "" + +#: src/deck-picker.md:29 +msgid "[Restore from backup](#restore-from-backup)" +msgstr "" + +#: src/deck-picker.md:30 +msgid "[Manage note types](#manage-note-types)" +msgstr "" + +#: src/deck-picker.md:31 +msgid "[Import](#import)" +msgstr "" + +#: src/deck-picker.md:32 +msgid "[Export collection](#export-collection)" +msgstr "" + +#: src/deck-picker.md:33 +msgid "[Deck Counts](#deck-counts)" +msgstr "" + +#: src/deck-picker.md:35 +msgid "__Note:__ _This section onwards assumes you understand what [decks and cards](https://docs.ankiweb.net/getting-started.html#key-concepts) are_" +msgstr "" + +#: src/deck-picker.md:37 +msgid "The deck list is the screen you see when you start AnkiDroid. It displays a list of the decks which contain all of your flashcards, and allows you to perform various actions:" +msgstr "" + +#: src/deck-picker.md:39 +msgid "![decks.png](img/1-decks.png)" +msgstr "" + +#: src/deck-picker.md:41 +msgid "Add button" +msgstr "" + +#: src/deck-picker.md:42 +msgid "The big blue + button in the bottom right corner is used to add new material to AnkiDroid. Pressing it expands to give the following three options, which are also described in the [tutorial video](https://www.youtube.com/watch?v=F2K1gOSdIZA)." +msgstr "" + +#: src/deck-picker.md:44 +msgid "Add" +msgstr "" + +#: src/deck-picker.md:45 +msgid "Choose this option if you want to create your own flashcards (notes) with AnkiDroid. \"Notes\" and \"cards\" have specific meanings in Anki, which are [explained in the main Anki manual](https://docs.ankiweb.net/getting-started.html#key-concepts). Please see the tutorial video for a quick introduction to adding notes, or refer to the [adding notes](adding-notes.md#add-note-screen) section below for more detailed information." +msgstr "" + +#: src/deck-picker.md:47 +msgid "Get shared decks" +msgstr "" + +#: src/deck-picker.md:48 +msgid "To download a deck of cards from the internet that another user has contributed:" +msgstr "" + +#: src/deck-picker.md:49 +msgid "Ensure you're connected to the internet." +msgstr "" + +#: src/deck-picker.md:50 +msgid "Tap + and then **Get shared decks**. AnkiWeb will open." +msgstr "" + +#: src/deck-picker.md:51 +msgid "Select a category, or type in a search." +msgstr "" + +#: src/deck-picker.md:52 +msgid "Tap **Info** on a deck you'd like to study." +msgstr "" + +#: src/deck-picker.md:53 +msgid "Scroll down and tap **Download**." +msgstr "" + +#: src/deck-picker.md:54 +msgid "You browser will download the file and display a `download complete` notification. Tap this button." +msgstr "" + +#: src/deck-picker.md:56 +msgid "AnkiDroid will appear, and show a confirmation dialog. Tap the **Add** button." +msgstr "" + +#: src/deck-picker.md:57 +msgid "When the import completes, your deck should be ready to study." +msgstr "" + +#: src/deck-picker.md:59 +msgid "Create deck" +msgstr "" + +#: src/deck-picker.md:60 +msgid "To create a new empty deck:" +msgstr "" + +#: src/deck-picker.md:61 +msgid "Tap the **+** button and choose `Create deck`" +msgstr "" + +#: src/deck-picker.md:62 +msgid "Choose a name for the deck, for example `New Japanese`" +msgstr "" + +#: src/deck-picker.md:63 +msgid "Add cards to it following the `Add` instructions above" +msgstr "" + +#: src/deck-picker.md:65 src/reviewer.md:16 +msgid "App Bar" +msgstr "" + +#: src/deck-picker.md:66 +msgid "At the top of each screen in AnkiDroid is the App Bar, with buttons for performing various actions. The following actions are available from the app bar in the deck list:" +msgstr "" + +#: src/deck-picker.md:69 +msgid "Navigation menu button" +msgstr "" + +#: src/deck-picker.md:70 +msgid "Tapping the icon on the far left will show the [left navigation menu](drawer.md#navigation-drawer) for quickly navigating between the main parts of the app." +msgstr "" + +#: src/deck-picker.md:72 +msgid "Sync button" +msgstr "" + +#: src/deck-picker.md:73 +msgid "The circular button with arrows on the right is for synchronizing your cards with the cloud, as described in the [adding decks from cloud](anki-desktop.md#using-anki-desktop-with-ankidroid) section." +msgstr "" + +#: src/deck-picker.md:75 +msgid "Overflow menu button" +msgstr "" + +#: src/deck-picker.md:76 +msgid "On the far right is the overflow menu which contains less commonly used actions. These actions are described further below." +msgstr "" + +#: src/deck-picker.md:78 +msgid "**Hint:** long tapping on a button in the app bar anywhere in the app will display a textual hint describing what the button does!" +msgstr "" + +#: src/deck-picker.md:80 +msgid "Studying a Deck" +msgstr "" + +#: src/deck-picker.md:81 +msgid "To study the cards in a deck, simply tap on the deck name (or the \"STUDY\" button on a 10\" tablet), and AnkiDroid will switch to study mode. " +msgstr "" + +#: src/deck-picker.md:83 +msgid "Note that the currently selected deck is highlighted with a grey background, and if you have any [filtered decks](filtered-deck.md#filtered-decks) they will be highlighted using a blue font. Filtered decks are discussed elsewhere in the manual." +msgstr "" + +#: src/deck-picker.md:85 +msgid "Other Deck Actions" +msgstr "" + +#: src/deck-picker.md:86 +msgid "Long tapping on a deck will show a list of other actions available to perform on that deck:" +msgstr "" + +#: src/deck-picker.md:88 +msgid "Rename deck" +msgstr "" + +#: src/deck-picker.md:89 +msgid "Use this option to rename a deck" +msgstr "" + +#: src/deck-picker.md:91 src/reviewer.md:46 +msgid "Deck options" +msgstr "" + +#: src/deck-picker.md:92 +msgid "Tapping on deck options allows you to configure various deck specific study options. Please see the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options." +msgstr "" + +#: src/deck-picker.md:95 +msgid "Custom study" +msgstr "" + +#: src/deck-picker.md:96 +msgid "Allows you to choose from some convenient presets for studying outside of your normal schedule, for example increasing the study limit for the day. See the section on [filtered decks](filtered-deck.md#filtered-decks) for more detailed information." +msgstr "" + +#: src/deck-picker.md:98 +msgid "Delete deck" +msgstr "" + +#: src/deck-picker.md:99 +msgid "Use this option to delete a deck (note: this action is not reversible, although you can [restore from a backup](backups.md#automatic-backups)" +msgstr "" + +#: src/deck-picker.md:101 +msgid "Export deck" +msgstr "" + +#: src/deck-picker.md:102 +msgid "This option can be used to share a deck with other users. See the [exporting decks](exporting.md#exporting-anki-files) section for more information." +msgstr "" + +#: src/deck-picker.md:104 src/deck-overview.md:40 +msgid "Unbury" +msgstr "" + +#: src/deck-picker.md:105 src/deck-overview.md:41 +msgid "This option is only visible when the selected deck has cards that have been manually or automatically buried." +msgstr "" + +#: src/deck-picker.md:107 +msgid "Rebuild / Empty" +msgstr "" + +#: src/deck-picker.md:108 +msgid "If the selected deck is a [filtered decks](filtered-deck.md#filtered-decks) then you also have the option to rebuild or empty the cards in it." +msgstr "" + +#: src/deck-picker.md:111 +msgid "Clickable areas on the decks" +msgstr "" + +#: src/deck-picker.md:112 +msgid "Each deck in the list has three clickable areas:" +msgstr "" + +#: src/deck-picker.md:114 +msgid "Deck expander" +msgstr "" + +#: src/deck-picker.md:115 +msgid "If you are using [subdecks](https://docs.ankiweb.net/getting-started.html#decks), then a deck expander button may appear on the far left of the deck, which can be used to show / hide the subdecks. A ▶ icon means the deck has hidden subdecks which can be shown, a ▼ icon means the deck has visible subdecks that can be hidden, and no icon means that the deck has no subdecks. " +msgstr "" + +#: src/deck-picker.md:117 +msgid "**Note:** subdecks can be created by using the naming convention `PARENT::CHILD`." +msgstr "" + +#: src/deck-picker.md:119 +msgid "Deck name" +msgstr "" + +#: src/deck-picker.md:120 +msgid "This is the main clickable area, which will take you to the study screen if there are cards available to review." +msgstr "" + +#: src/deck-picker.md:122 +msgid "Count buttons" +msgstr "" + +#: src/deck-picker.md:123 +msgid "The count buttons on the far right of each deck act as a separate clickable area that takes you to the deck overview instead of the study screen. This can be useful if you want to quickly view the number of cards available in the deck." +msgstr "" + +#: src/deck-picker.md:125 +msgid "Advanced Actions" +msgstr "" + +#: src/deck-picker.md:126 +msgid "Some additional actions are located in the overflow menu for less common tasks, which are summarized below:" +msgstr "" + +#: src/deck-picker.md:128 src/reviewer.md:19 src/gestures.md:88 +#: src/keyboard-shortcuts.md:28 +msgid "Undo" +msgstr "" + +#: src/deck-picker.md:129 +msgid "After reviewing the last card in a study session, you can undo it from here." +msgstr "" + +#: src/deck-picker.md:131 +msgid "Check database" +msgstr "" + +#: src/deck-picker.md:132 +msgid "This can automatically fix a lot of problems with your database, and will also purge any unused tags. If you experience any problems with your collection, this is the first action you should try. " +msgstr "" + +#: src/deck-picker.md:134 +msgid "**NOTE:** Under some circumstances, check database will move cards to a deck named _!Recovered Cards_. If this occurs, please move the cards to an appropriate deck via the [card browser](browser.md#findingsearchingbrowsing), and delete _!Recovered Cards_ when it is empty." +msgstr "" + +#: src/deck-picker.md:136 +msgid "Check media" +msgstr "" + +#: src/deck-picker.md:137 +msgid "Try to run this if you experience any issues with media syncing." +msgstr "" + +#: src/deck-picker.md:139 +msgid "Empty cards" +msgstr "" + +#: src/deck-picker.md:140 +msgid "Remove any empty cards from your collection. See the [desktop documentation](https://docs.ankiweb.net/templates/generation.html#card-generation--deletion) for more." +msgstr "" + +#: src/deck-picker.md:142 +msgid "Restore from backup" +msgstr "" + +#: src/deck-picker.md:143 +msgid "Allows you to restore from one of AnkiDroid's [automatic backups](backups.md#automatic-backups)" +msgstr "" + +#: src/deck-picker.md:145 +msgid "Manage note types" +msgstr "" + +#: src/deck-picker.md:146 +msgid "Allows you to add, edit, and delete note types. See the [customizing card layout](advanced-features/customizing-card-layout.md) section for more help with this advanced feature.Keyboard Shortcuts" +msgstr "" + +#: src/deck-picker.md:148 +msgid "Import" +msgstr "" + +#: src/deck-picker.md:149 +msgid "Import a .apkg anki file containing a deck. See the [importing](importing/importing-anki-files.md) section for more." +msgstr "" + +#: src/deck-picker.md:151 +msgid "Export collection" +msgstr "" + +#: src/deck-picker.md:152 +msgid "Export entire collection as a collection.apkg file. See the [exporting](exporting.md) section for more." +msgstr "" + +#: src/deck-picker.md:154 +msgid "Deck Counts" +msgstr "" + +#: src/deck-picker.md:155 +msgid "Next to each deck, three numbers are displayed. The left, blue number, corresponds to how many new cards you have to learn today. Anki will introduce 20 new cards a day by default, and you can customize this number if you'd like. The red number in the middle is for the cards due to be studied today which are currently in the learning phase, and the green number is the cards which are due for review (i.e. cards which have already graduated from the learning phase). On a deck you've never studied before, these numbers will both be zero." +msgstr "" + +#: src/deck-picker.md:157 +msgid "As explained above, tapping on the counts will take you to the deck overview screen." +msgstr "" + +#: src/drawer.md:3 +msgid "![navigation_drawer.png](img/2-navigation_drawer.png)" +msgstr "" + +#: src/drawer.md:5 +msgid "The navigation drawer can be opened from most places in the application by pressing the left menu icon, or alternatively swiping outwards from anywhere on the far left side of the screen. It is used for quickly navigating between different parts of the application. You can switch to the following screens:" +msgstr "" + +#: src/drawer.md:9 +msgid "Decks" +msgstr "" + +#: src/drawer.md:10 +msgid "Takes you to the top level of the app where the list of cards are shown ([more info here](deck-picker.md))" +msgstr "" + +#: src/drawer.md:12 src/keyboard-shortcuts.md:8 src/keyboard-shortcuts.md:51 +msgid "Card Browser" +msgstr "" + +#: src/drawer.md:13 +msgid "Shows a list of all your cards ([more info here](browser.md))" +msgstr "" + +#: src/drawer.md:15 +msgid "Statistics" +msgstr "" + +#: src/drawer.md:16 +msgid "Helps you track your study progress ([more info in Anki manual](https://docs.ankiweb.net/stats.html#statistics) and [here](advanced-features/advanced-statistics.md))" +msgstr "" + +#: src/drawer.md:18 +msgid "Night mode" +msgstr "" + +#: src/drawer.md:19 +msgid "This switches the app to a dark theme which many users find is less straining on the eyes, particularly when reviewing in the dark. See the " +msgstr "" + +#: src/drawer.md:19 +msgid "wiki" +msgstr "" + +#: src/drawer.md:19 +msgid " for instructions on how to customize the card background and font color used in night mode." +msgstr "" + +#: src/drawer.md:21 +msgid "Settings" +msgstr "" + +#: src/drawer.md:22 +msgid "Allows you to customize the app ([more info here](settings.md))" +msgstr "" + +#: src/drawer.md:24 +msgid "Help" +msgstr "" + +#: src/drawer.md:25 +msgid "Opens this web page" +msgstr "" + +#: src/drawer.md:27 +msgid "Send feedback" +msgstr "" + +#: src/drawer.md:28 +msgid "Get support from the AnkiDroid team" +msgstr "" + +#: src/deck-overview.md:3 +msgid "[App bar](#app-bar)" +msgstr "" + +#: src/deck-overview.md:4 +msgid "[Ordinary decks](#ordinary-decks)" +msgstr "" + +#: src/deck-overview.md:5 +msgid "[Custom Study](#custom-study)" +msgstr "" + +#: src/deck-overview.md:6 +msgid "[Filtered decks](#filtered-decks)" +msgstr "" + +#: src/deck-overview.md:7 +msgid "[Empty deck](#empty-deck)" +msgstr "" + +#: src/deck-overview.md:8 +msgid "[Rebuild deck](#rebuild-deck)" +msgstr "" + +#: src/deck-overview.md:9 +msgid "[Overflow menu](#overflow-menu)" +msgstr "" + +#: src/deck-overview.md:10 +msgid "[Deck Options](#deck-options)" +msgstr "" + +#: src/deck-overview.md:13 +msgid "![deck_overview.png](img/3-deck_overview.png)" +msgstr "" + +#: src/deck-overview.md:15 +msgid "From the deck list, if you tap the counts area you will be taken to the deck overview screen. On tablets it is always shown in the area to the right of the deck list." +msgstr "" + +#: src/deck-overview.md:17 +msgid "On this screen you can view a summary of the deck, build custom study sessions, rebuild / empty filtered decks, and change deck options. When visible, pressing the study button will take you to the study screen for that deck." +msgstr "" + +#: src/deck-overview.md:19 +msgid "App bar" +msgstr "" + +#: src/deck-overview.md:20 +msgid "The icons that are shown in the app bar depend on whether your deck is an ordinary deck or a filtered deck." +msgstr "" + +#: src/deck-overview.md:22 +msgid "Ordinary decks" +msgstr "" + +#: src/deck-overview.md:24 +msgid "Custom Study" +msgstr "" + +#: src/deck-overview.md:25 +msgid "Tapping the wrench icon allows you to create a custom session, for example to do extra reviews outside your normal schedule, or study only certain cards inside a deck. See the [filtered deck section](filtered-deck.md) for more information on this." +msgstr "" + +#: src/deck-overview.md:27 +msgid "Filtered decks" +msgstr "" + +#: src/deck-overview.md:29 +msgid "Empty deck" +msgstr "" + +#: src/deck-overview.md:30 +msgid "Tapping the cross icon will empty all of the cards in the current filtered deck (i.e. return them to their original deck)." +msgstr "" + +#: src/deck-overview.md:32 +msgid "Rebuild deck" +msgstr "" + +#: src/deck-overview.md:33 +msgid "Tapping the rebuild icon will rebuild the current filtered deck according to the settings specified in filtered deck options." +msgstr "" + +#: src/deck-overview.md:35 +msgid "Overflow menu" +msgstr "" + +#: src/deck-overview.md:37 +msgid "Deck Options" +msgstr "" + +#: src/deck-overview.md:38 +msgid "Allows you to configure some options related to the current deck, such as the number of new cards and reviews to introduce each day. Please see the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options." +msgstr "" + +#: src/reviewer.md:3 +msgid "Tapping on the deck name from the deck list, or the study button from the deck overview screen will take you to the study screen where you do your study. " +msgstr "" + +#: src/reviewer.md:5 +msgid "![reviewer.png](img/4-reviewer.png)" +msgstr "" + +#: src/reviewer.md:7 +msgid "Basics" +msgstr "" + +#: src/reviewer.md:8 +msgid "If you have not used Anki on a computer before, you may like to have a look at the first [intro video](https://docs.ankiweb.net/getting-started.html#videos) before reading on, as it explains the basic review process." +msgstr "" + +#: src/reviewer.md:10 +msgid "On the top left of the screen you'll see three numbers. From the left, these correspond to new cards, learning cards, and cards to review. These are explained in more detail in the intro videos for the desktop program, so please [check them out](https://docs.ankiweb.net/getting-started.html#videos) if you haven't already." +msgstr "" + +#: src/reviewer.md:12 +msgid "When you've looked at a card's question and remembered the answer, or decided you don't know it, tap the **show answer** button. When you do, the bottom area will change to display 2-4 answer buttons, depending on how you've answered the card previously. The buttons will display the time a card will next be shown, so 10m means **10 minutes** and **5d** means **5 days**. You can tap directly on these buttons to choose a particular answer. " +msgstr "" + +#: src/reviewer.md:14 +msgid "To make reviewing faster, you can configure gestures (for example taps and swipes) to answer cards without using the buttons. See the [preferences section](settings.md) for more information on configuring gestures." +msgstr "" + +#: src/reviewer.md:17 +msgid "The App Bar at the top of the study screen has several buttons for performing various common actions. The number of buttons which are shown is determined automatically by Android based on the size and resolution of your screen. If there is not enough space to show the button for a given action, then the action will be available from the menu instead. If you are unsure what a button does, you can long-tap on it to see the name of the action. The following action are available:" +msgstr "" + +#: src/reviewer.md:20 +msgid "Undo the answer you chose for the last card you studied (button always shown)." +msgstr "" + +#: src/reviewer.md:22 +msgid "Mark Card" +msgstr "" + +#: src/reviewer.md:23 +msgid "Adds a **marked** tag to the current note, so it can be easily found in the browser. This is useful when you want to take some action on the note at a later date, such as looking up a word when you get home. Marked cards also show a small star in the upper-right-hand corner during reviews." +msgstr "" + +#: src/reviewer.md:26 +msgid "Flag Card" +msgstr "" + +#: src/reviewer.md:27 +msgid "Adds a color coded **flag** (red, orange, green, or blue) This can be used as a general purpose indicator to differentiate your cards. Flags are represented by a number from 1-4, corresponding to the previously listed colors." +msgstr "" + +#: src/reviewer.md:30 +msgid "Edit Card" +msgstr "" + +#: src/reviewer.md:31 +msgid "Open the edit note screen, where you can change the content displayed on the flashcard (see the [editing notes section](editing-notes.md) for more help)" +msgstr "" + +#: src/reviewer.md:33 +msgid "Hide / Delete" +msgstr "" + +#: src/reviewer.md:34 +msgid "Give options to bury, suspend, or delete the current note or card" +msgstr "" + +#: src/reviewer.md:36 +msgid "**Bury card / Bury note:** Hides a card or all of the note’s cards from review until the next day. (If you want to unbury cards before then, you can choose “unbury” from the long-press menu in the [deck list](deck-picker.md), or from the [deck overview screen](deck-overview.md).) This is useful if you cannot answer the card at the moment or you want to come back to it another time. Burying can also happen automatically for cards of the same note. If cards were in learning when they are buried, they are moved back to the new card queue or review queue prior to being buried." +msgstr "" + +#: src/reviewer.md:37 +msgid "**Suspend card / Suspend note:** Hides a card or all of the note’s cards from review until they are manually unsuspended (by long-tapping a card in the [card browser](browser.md)). This is useful if you want to avoid reviewing the note for some time, but don’t want to delete it. If cards were in learning when they are suspended, they are moved back to the new card queue or review queue prior to being suspended." +msgstr "" + +#: src/reviewer.md:38 +msgid "**Delete note:** Deletes the note and all of its cards." +msgstr "" + +#: src/reviewer.md:40 +msgid "Replay Audio" +msgstr "" + +#: src/reviewer.md:41 +msgid "If the card has audio on the front or back, it will be played again." +msgstr "" + +#: src/reviewer.md:43 +msgid "Enable / Disable Whiteboard" +msgstr "" + +#: src/reviewer.md:44 +msgid "This action enables or disables the whiteboard feature for the current deck. The whiteboard feature allows you to draw on the screen, which is particularly useful for practicing drawing characters from languages such as Japanese. When the whiteboard has been enabled for the current deck, two new actions will become available for clearing and hiding the whiteboard. Disabling the whiteboard will hide these actions as well as the whiteboard itself." +msgstr "" + +#: src/reviewer.md:47 +msgid "Open the deck specific study options. See the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options." +msgstr "" + +#: src/reviewer.md:49 +msgid "Check Pronunciation" +msgstr "" + +#: src/reviewer.md:50 +msgid "This action enables or disables the temporary audio recorder toolbar at the top of the card. This feature allows you to record your voice and replay it. It is used primarily to check your pronunciation. This toolbar is composed of three buttons: play, stop playing and record microphone audio. This tool can be used while viewing either the question or the answer." +msgstr "" + +#: src/reviewer.md:52 +msgid "Reaching the end of the study session" +msgstr "" + +#: src/reviewer.md:53 +msgid "When you've finished the cards that are due to be studied today, you'll be taken back to the decks list and shown a congratulations message. From here you can select a different deck, or if you've finished studying for the day, you can simply tap the home button in order to close AnkiDroid (and you can also do this in the middle of reviews if you wish)." +msgstr "" + +#: src/reviewer.md:55 +msgid "If you wish to keep studying the same deck further, tap on the deck again which will give you several options for continued study. Please see the [filtered deck](filtered-deck.md) section for more on custom study." +msgstr "" + +#: src/adding-notes.md:3 +msgid "[Type](#type)" +msgstr "" + +#: src/adding-notes.md:4 +msgid "[Deck](#deck)" +msgstr "" + +#: src/adding-notes.md:5 +msgid "[Fields](#fields)" +msgstr "" + +#: src/adding-notes.md:6 +msgid "[Media Buttons](#media-buttons)" +msgstr "" + +#: src/adding-notes.md:7 +msgid "[Tags](#tags)" +msgstr "" + +#: src/adding-notes.md:8 +msgid "[Cards](#cards)" +msgstr "" + +#: src/adding-notes.md:10 +msgid "__Note:__ _This section onwards assumes you understand what [notes, fields, card templates, and note types](https://docs.ankiweb.net/getting-started.html#notes--fields) are_" +msgstr "" + +#: src/adding-notes.md:12 +msgid "To add a new note, tap the **+** button at the bottom of the deck list and choose **Add**." +msgstr "" + +#: src/adding-notes.md:14 +msgid "![adding.png](img/5-adding.png)" +msgstr "" + +#: src/adding-notes.md:16 +msgid "The following controls are available in the add note screen:" +msgstr "" + +#: src/adding-notes.md:18 +msgid "Type" +msgstr "" + +#: src/adding-notes.md:19 +msgid "Allows you to select the type of note you'd like to add. For most purposes the **Basic** note type is sufficient, but for example if you would like an extra card generated which is the reverse of the main card (i.e. shows the **Back** field on the front of the card), you could chose the **Basic (and reversed card)** note type." +msgstr "" + +#: src/adding-notes.md:22 +msgid "Deck" +msgstr "" + +#: src/adding-notes.md:23 +msgid "Allows you to change the deck the generated card/cards will be added to." +msgstr "" + +#: src/adding-notes.md:25 +msgid "Fields" +msgstr "" + +#: src/adding-notes.md:26 +msgid "Below the deck selector are the fields for the note (for example the **Basic** note type has two fields **Front** and **Back**). When you tap on a field, a keyboard will come up, allowing you to type in information." +msgstr "" + +#: src/adding-notes.md:28 +msgid "Media Buttons" +msgstr "" + +#: src/adding-notes.md:29 +msgid "Next to each field is an attach icon, which allows you to add media to your note (this feature is currently in the experimental phase). \n" +"Add image lets you add images either via your device's camera (if it has one), or from your photo library. Record audio allows you to record your voice and place it into a field. The advanced editor lets you automatically search for translations or pronunciation audio files online." +msgstr "" + +#: src/adding-notes.md:33 +msgid "Tags" +msgstr "" + +#: src/adding-notes.md:34 +msgid "Brings up a dialog which lets you add / remove tags from the note." +msgstr "" + +#: src/adding-notes.md:36 +msgid "Cards" +msgstr "" + +#: src/adding-notes.md:37 +msgid "Shows the names of the cards which will be generated for the selected note type. Tapping on this button will bring up a dialog which lets you preview the source code for the card template of the selected note type. From here you can edit, preview, add, and delete card templates. See the [cards and templates section](https://docs.ankiweb.net/templates/intro.html) of the Anki Desktop manual for more information about card templates." +msgstr "" + +#: src/adding-notes.md:39 +msgid "Long press in a text entry field to add a cloze deletion around the selected text, or an empty cloze deletion if there is no selected text." +msgstr "" + +#: src/adding-notes.md:41 +msgid "When you've finished typing in the content of a note, tap the tick icon in the app bar at the top to add it to your collection. Alternatively, if you want to go back to what you were doing without saving, you can tap the app icon, or use the hardware back button." +msgstr "" + +#: src/editing-notes.md:2 +msgid "The edit note screen can be opened by choosing edit while reviewing, or by opening a card in the browser. The edit screen is similar to the add new note screen mentioned above, with some key differences:" +msgstr "" + +#: src/editing-notes.md:5 +msgid "Changing the deck operates on the selected card (which is underlined in the **Cards** box). If a note type is chosen which has more than one card, only the currently selected card will be moved to the new deck." +msgstr "" + +#: src/editing-notes.md:8 +msgid "Changing the **Type** dropdown selector changes to the note type edit mode. In this mode, editing the content of the note (i.e. deck, fields, etc) is disabled, and if a custom note type with more than two fields is being used, additional buttons will appear which let you control the mapping of the fields to the new note type." +msgstr "" + +#: src/editing-notes.md:11 +msgid "If a note type is selected which has less cards than the original note type, only the first n cards will be kept. For example changing from **Basic (and reversed card)** to **Basic** will lead to only the first card being kept. To warn you of this, the text in the **Cards** box will appear red, and a confirmation dialog will be shown before the note is saved." +msgstr "" + +#: src/editing-notes.md:14 +msgid "Hint: to change the type for multiple notes in one go, or to customize the mapping between cards, use the **Change note type** option in the browser on Anki Desktop." +msgstr "" + +#: src/editing-notes.md:16 +msgid "There are also several advanced options available in the main menu:" +msgstr "" + +#: src/editing-notes.md:18 +msgid "Add note" +msgstr "" + +#: src/editing-notes.md:19 +msgid "Create a new empty note" +msgstr "" + +#: src/editing-notes.md:21 +msgid "Copy card" +msgstr "" + +#: src/editing-notes.md:22 +msgid "Copy the current note to a new editable note" +msgstr "" + +#: src/editing-notes.md:24 +msgid "Reset progress" +msgstr "" + +#: src/editing-notes.md:25 +msgid "Move the card to the end of the new card queue. The current state of the card is cleared, but not its revision history." +msgstr "" + +#: src/editing-notes.md:27 src/keyboard-shortcuts.md:59 +msgid "Reschedule" +msgstr "" + +#: src/editing-notes.md:28 +msgid "Allows you to reschedule as a review card on a given date. This is useful if you have imported already-learnt material, and you want to start it off with higher initial intervals." +msgstr "" + +#: src/browser.md:9 +msgid "[Searching](#searching)" +msgstr "" + +#: src/browser.md:10 +msgid "[tag:marked](#tagmarked)" +msgstr "" + +#: src/browser.md:11 +msgid "[is:due](#isdue)" +msgstr "" + +#: src/browser.md:12 +msgid "[front:rabbit](#frontrabbit)" +msgstr "" + +#: src/browser.md:13 +msgid "[flag:1](#flag1)" +msgstr "" + +#: src/browser.md:15 +msgid "You can search for or browse cards by tapping the **Card browser** button from the [navigation drawer](drawer.md)." +msgstr "" + +#: src/browser.md:17 +msgid "![img/6-browser.png](img/6-browser.png)" +msgstr "" + +#: src/browser.md:19 +msgid "The browser screen starts by displaying all the cards in the currently selected deck. You can search for cards in the selected deck by tapping the magnifying glass icon in the top. You can change the selected deck (or change to all decks) by choosing the deck from the dropdown list on the top left." +msgstr "" + +#: src/browser.md:21 +msgid "By default, the first column in the browser gives the text which will be shown on the question (i.e. front side) of the flashcard, and the second column shows the text from the answer (i.e. the back side) of the flashcard. " +msgstr "" + +#: src/browser.md:23 +msgid "The first column can also be configured to show the [sort field](https://docs.ankiweb.net/editing.html#customizing-fields) for a more compact display. The second column can be configured to show many different parameters by tapping the drop down menu in the column heading. " +msgstr "" + +#: src/browser.md:25 +msgid "Note that the content of the columns is dynamically calculated as your scroll through the list of the cards." +msgstr "" + +#: src/browser.md:27 +msgid "From the search results, you can tap on a card to edit it (see the [edit note section](editing-notes.md) above), or long-tapping on it will show a menu allowing you to perform the following actions:" +msgstr "" + +#: src/browser.md:29 +msgid "Mark / unmark note" +msgstr "" + +#: src/browser.md:30 +msgid "Add / remove the **marked** tag from the note. Cards with a marked note are highlighted in purple." +msgstr "" + +#: src/browser.md:32 +msgid "Flag card" +msgstr "" + +#: src/browser.md:33 +msgid "Change or remove the color coded **flag** on the card. Cards with a flag are highlighted in the flags color." +msgstr "" + +#: src/browser.md:35 +msgid "Suspend / unsuspend card" +msgstr "" + +#: src/browser.md:36 +msgid "Suspended cards are highlighted in yellow, and are not shown during review." +msgstr "" + +#: src/browser.md:38 src/gestures.md:107 +msgid "Delete note" +msgstr "" + +#: src/browser.md:39 +msgid "Delete the note of the currently selected card, and all cards belonging to that note. This action cannot be undone without [restoring from backup](backups.md)." +msgstr "" + +#: src/browser.md:41 +msgid "Preview" +msgstr "" + +#: src/browser.md:42 +msgid "Render the currently selected card so that you can see what it looks like in the reviewer." +msgstr "" + +#: src/browser.md:44 +msgid "Select multiple cards" +msgstr "" + +#: src/browser.md:45 +msgid "Long-tapping on a single card will select the single card. While that card is selected, if you long-tap on another card on your screen, then all of the cards between the first selected card and the last card will be selected. This allows for actions to be performed on multiple cards at once." +msgstr "" + +#: src/browser.md:47 +msgid "Searching" +msgstr "" + +#: src/browser.md:48 +msgid "AnkiDroid supports all the search strings that the desktop version of Anki does, allowing you to perform quite complex searches. Some examples:" +msgstr "" + +#: src/browser.md:50 +msgid "tag:marked" +msgstr "" + +#: src/browser.md:51 +msgid "show cards that with the tag **marked**" +msgstr "" + +#: src/browser.md:53 +msgid "is:due" +msgstr "" + +#: src/browser.md:54 +msgid "show only cards that are waiting for review" +msgstr "" + +#: src/browser.md:56 +msgid "front:rabbit" +msgstr "" + +#: src/browser.md:57 +msgid "show only cards where the front field is exactly **rabbit** " +msgstr "" + +#: src/browser.md:59 +msgid "flag:1" +msgstr "" + +#: src/browser.md:60 +msgid "show only cards marked with a red flag" +msgstr "" + +#: src/browser.md:62 +msgid "For a full list of the possibilities, please see the section in the [desktop manual](https://docs.ankiweb.net/searching.html)." +msgstr "" + +#: src/browser.md:64 +msgid "Alternatively, some more commonly used filters (marked, suspended, and tagged cards) can be quickly applied without manually typing them by choosing them from the overflow menu. You can also save and recall common search queries from the menu." +msgstr "" + +#: src/filtered-deck.md:3 +msgid "Anki is designed to optimize the learning process, so that you study the minimum amount necessary to remember the majority of your cards. Once the congratulations screen is reached, further study becomes a case of diminishing returns: the amount of extra time spent going over the same cards again is generally not worth the moderate increase in retention you'll see." +msgstr "" + +#: src/filtered-deck.md:5 +msgid "That said, if you have a test looming, or simply want to pass some time, it's possible to keep reviewing even after you are shown the congratulations message." +msgstr "" + +#: src/filtered-deck.md:7 +msgid "A **filtered deck** is a temporary deck that contains cards based on various criteria, such as **forgotten today**, `is tagged 'hard'`, and so on. After studying cards in a filtered deck, or when the filtered deck is deleted, the cards are automatically returned to their original deck." +msgstr "" + +#: src/filtered-deck.md:9 +msgid "The easiest way to create a filtered deck is by long clicking on a deck and choosing the **custom study** option. " +msgstr "" + +#: src/filtered-deck.md:11 +msgid "Advanced users can create a filtered deck manually, by choosing **Create filtered deck** from the overflow menu in the deck list screen." +msgstr "" + +#: src/filtered-deck.md:13 +msgid "For further information on filtered decks, please see the [desktop documentation](https://docs.ankiweb.net/filtered-decks.html#filtered-decks--cramming)." +msgstr "" + +#: src/importing/importing-anki-files.md:3 +msgid "You can import Anki files (with .apkg file format) directly into AnkiDroid. Other file formats cannot be imported directly into AnkiDroid, however flashcards from most other applications can be imported into Anki Desktop on your computer, which can then be [added into AnkiDroid in the usual way](../anki-desktop.md). See the [importing section of the Anki Desktop manual](https://docs.ankiweb.net/importing/intro.html) for help on importing into Anki Desktop." +msgstr "" + +#: src/importing/importing-anki-files.md:6 +msgid "As in Anki Desktop, AnkiDroid distinguishes between [the two types of .apkg files](https://docs.ankiweb.net/exporting.html) (**collection package** and **deck package**) based on the filename. Collection packages have the name **collection.colpkg**, and when imported will completely _replace all contents_ in AnkiDroid. Any apkg file which is **_not_** named something that ends in **.colpkg** will be treated as a deck package, which will be _merged with any existing content_ when imported into to AnkiDroid." +msgstr "" + +#: src/importing/importing-anki-files.md:8 +msgid "You can import .apkg Anki collection files into AnkiDroid either by opening them using the standard Android system, or by manually importing them from within AnkiDroid:" +msgstr "" + +#: src/importing/importing-anki-files.md:10 +msgid "Open the file using Android" +msgstr "" + +#: src/importing/importing-anki-files.md:11 +msgid "Apkg files are automatically associated with AnkiDroid, so for example if you open a .apkg email attachment which you sent to yourself, then AnkiDroid will automatically open the file and confirm if you want to import it. Simply click OK and the apkg file will be imported." +msgstr "" + +#: src/importing/importing-anki-files.md:13 +msgid "Import the file manually in AnkiDroid" +msgstr "" + +#: src/importing/importing-anki-files.md:14 +msgid "You can also manually import .apkg files as follows:" +msgstr "" + +#: src/importing/importing-anki-files.md:16 +msgid "Connect your device to your computer using USB" +msgstr "" + +#: src/importing/importing-anki-files.md:17 +msgid "Copy the .apkg from your computer to the AnkiDroid folder on your device" +msgstr "" + +#: src/importing/importing-anki-files.md:18 +msgid "Open AnkiDroid on your device" +msgstr "" + +#: src/importing/importing-anki-files.md:19 +msgid "From the main menu in the deck list, choose _Import_" +msgstr "" + +#: src/importing/importing-anki-files.md:20 +msgid "Choose the apkg file you just copied to your device when prompted" +msgstr "" + +#: src/importing/importing-anki-files.md:21 +msgid "Tap OK" +msgstr "" + +#: src/importing/importing-anki-databases.md:3 +msgid "AnkiDroid does not support directly importing Anki database (`.anki2`) files. A database import will replace your collection with the contents the provided file. If you want to perform a full replacement, you should import a `collection[.apkg/.colpkg]` created in the app with the export function." +msgstr "" + +#: src/importing/importing-anki-databases.md:5 +msgid "Importing anki2 files manually" +msgstr "" + +#: src/importing/importing-anki-databases.md:7 +msgid "This is not officially supported, but `.anki2` files can manually be imported if needed, in cases of troubleshooting for example:" +msgstr "" + +#: src/importing/importing-anki-databases.md:9 +msgid "Create a new folder on your Android file system" +msgstr "" + +#: src/importing/importing-anki-databases.md:10 +msgid "Obtain the full path to the folder as provided by your file manager, this will typically appear as: `/storage/emulated/0/`" +msgstr "" + +#: src/importing/importing-anki-databases.md:11 +msgid "Place the `.anki2` file in the newly created folder" +msgstr "" + +#: src/importing/importing-anki-databases.md:12 +msgid "Rename the file to `collection.anki2`" +msgstr "" + +#: src/importing/importing-anki-databases.md:13 +msgid "(If applicable) Temporarily log out of your AnkiWeb account: `Settings - AnkiDroid - AnkiWeb account`" +msgstr "" + +#: src/importing/importing-anki-databases.md:14 +msgid "Open `Settings - Advanced - AnkiDroid Directory` and set the AnkiDroid Directory to the newly created folder." +msgstr "" + +#: src/exporting.md:3 +msgid "AnkiDroid can export your flashcards in the .apkg Anki file format so that you can import them into Anki Desktop, or share them with other people. As in Anki Desktop, you can either export a [collection package or deck package](https://docs.ankiweb.net/exporting.html#packaged-decks), depending on what you are trying to achieve." +msgstr "" + +#: src/exporting.md:6 +msgid "There are two export options available: **include scheduling information** and **include media**. Generally the default options are sufficient, if you choose not to include scheduling information, Anki will assume that you are sharing the deck with other people, and will remove marked and leech tags so that they will have a clean copy of it." +msgstr "" + +#: src/exporting.md:8 +msgid "Exporting collection package" +msgstr "" + +#: src/exporting.md:9 +msgid "When exporting for use in Anki Desktop, you generally want to [export your entire collection](https://docs.ankiweb.net/exporting.html#collection-colpkg), including all your review history etc. " +msgstr "" + +#: src/exporting.md:11 src/exporting.md:28 +msgid "From the main menu in the decks screen:" +msgstr "" + +#: src/exporting.md:13 +msgid "Tap the **Export** item in the menu." +msgstr "" + +#: src/exporting.md:14 +msgid "Tap **OK** using default options" +msgstr "" + +#: src/exporting.md:15 +msgid "Tap **OK** again to email the exported collection.apkg file to yourself, or alternatively you can manually copy to your computer using USB" +msgstr "" + +#: src/exporting.md:17 +msgid "To import the file on your computer:" +msgstr "" + +#: src/exporting.md:19 +msgid "Save the file **collection.apkg** to your desktop" +msgstr "" + +#: src/exporting.md:20 +msgid "Double-click on the file to start Anki." +msgstr "" + +#: src/exporting.md:21 +msgid "Confirm you wish to replace, so that the deck from your mobile device overwrites the old data on your desktop." +msgstr "" + +#: src/exporting.md:23 +msgid "After importing, you can delete the apkg file on your desktop if you wish." +msgstr "" + +#: src/exporting.md:25 +msgid "Exporting deck package" +msgstr "" + +#: src/exporting.md:26 +msgid "If you want to share a deck in AnkiDroid with another user, you can export a deck package. " +msgstr "" + +#: src/exporting.md:30 +msgid "Long tap on the deck you wish to export" +msgstr "" + +#: src/exporting.md:31 +msgid "Tap **Export**" +msgstr "" + +#: src/exporting.md:32 +msgid "Tap **OK** using the default options" +msgstr "" + +#: src/exporting.md:33 +msgid "Tap **OK** again to email the exported apkg to another user" +msgstr "" + +#: src/backups.md:3 +msgid "AnkiDroid will automatically create backups of your collection for you. The backups include all your cards and statistics, but do not include sounds or images." +msgstr "" + +#: src/backups.md:5 +msgid "The backup is taken in the background when you first start the app. A backup will only happen if more than 5 hours has elapsed since the last time a backup was created. By default, AnkiDroid will store the last 8 backups; this number can be changed in the main settings." +msgstr "" + +#: src/backups.md:8 +msgid "You can restore a backup by choosing the _restore from backup_ option from the main menu of the [decks screen](deck-picker.md)." +msgstr "" + +#: src/settings.md:3 +msgid "[AnkiDroid](#ankidroid)" +msgstr "" + +#: src/settings.md:4 +msgid "[AnkiWeb account](#ankiweb-account)" +msgstr "" + +#: src/settings.md:5 +msgid "[Fetch media on sync](#fetch-media-on-sync)" +msgstr "" + +#: src/settings.md:6 +msgid "[Automatic synchronization](#automatic-synchronization)" +msgstr "" + +#: src/settings.md:7 +msgid "[Deck for new cards](#deck-for-new-cards)" +msgstr "" + +#: src/settings.md:8 +msgid "[Language](#language)" +msgstr "" + +#: src/settings.md:9 +msgid "[Error reporting mode](#error-reporting-mode)" +msgstr "" + +#: src/settings.md:10 +msgid "[Notifications](#notifications)" +msgstr "" + +#: src/settings.md:11 +msgid "[Notify when](#notify-when)" +msgstr "" + +#: src/settings.md:12 +msgid "[Vibrate](#vibrate)" +msgstr "" + +#: src/settings.md:13 +msgid "[Blink light](#blink-light)" +msgstr "" + +#: src/settings.md:14 +msgid "[Reviewing](#reviewing)" +msgstr "" + +#: src/settings.md:15 +msgid "[New card position](#new-card-position)" +msgstr "" + +#: src/settings.md:16 +msgid "[Start of next day](#start-of-next-day)" +msgstr "" + +#: src/settings.md:17 +msgid "[Learn ahead limit](#learn-ahead-limit)" +msgstr "" + +#: src/settings.md:18 +msgid "[Timebox limit](#timebox-limit)" +msgstr "" + +#: src/settings.md:19 +msgid "[Display](#display)" +msgstr "" + +#: src/settings.md:20 +msgid "[Keep screen on](#keep-screen-on)" +msgstr "" + +#: src/settings.md:21 +msgid "[Fullscreen mode](#fullscreen-mode)" +msgstr "" + +#: src/settings.md:22 +msgid "[Center align](#center-align)" +msgstr "" + +#: src/settings.md:23 +msgid "[Show button time](#show-button-time)" +msgstr "" + +#: src/settings.md:24 +msgid "[Card zoom](#card-zoom)" +msgstr "" + +#: src/settings.md:25 +msgid "[Image zoom](#image-zoom)" +msgstr "" + +#: src/settings.md:26 +msgid "[Answer button size](#answer-button-size)" +msgstr "" + +#: src/settings.md:27 +msgid "[Show remaining](#show-remaining)" +msgstr "" + +#: src/settings.md:28 +msgid "[Whiteboard](#whiteboard)" +msgstr "" + +#: src/settings.md:29 +msgid "[Stroke width](#stroke-width)" +msgstr "" + +#: src/settings.md:30 +msgid "[Black strokes](#black-strokes)" +msgstr "" + +#: src/settings.md:31 +msgid "[Automatic display answer](#automatic-display-answer)" +msgstr "" + +#: src/settings.md:32 +msgid "[Time to show answer](#time-to-show-answer)" +msgstr "" + +#: src/settings.md:33 +msgid "[Time to show next question](#time-to-show-next-question)" +msgstr "" + +#: src/settings.md:34 +msgid "[Fonts](#fonts)" +msgstr "" + +#: src/settings.md:35 +msgid "[Default font](#default-font)" +msgstr "" + +#: src/settings.md:36 +msgid "[Default font applicability](#default-font-applicability)" +msgstr "" + +#: src/settings.md:37 +msgid "[Browser and editor font](#browser-and-editor-font)" +msgstr "" + +#: src/settings.md:38 +msgid "[Card browser font scaling](#card-browser-font-scaling)" +msgstr "" + +#: src/settings.md:40 +msgid "The preferences screen can be accessed by opening the navigation drawer, and choosing **Settings**. It allows you to customize various application settings and how AnkiDroid appears." +msgstr "" + +#: src/settings.md:42 +msgid "The Preferences screen is divided up into different sections, which are covered below." +msgstr "" + +#: src/settings.md:44 +msgid "AnkiDroid" +msgstr "" + +#: src/settings.md:45 +msgid "These are the general settings which affect the whole app:" +msgstr "" + +#: src/settings.md:47 +msgid "AnkiWeb account" +msgstr "" + +#: src/settings.md:48 +msgid "Change the account used for syncing with the cloud. For more information on syncing, please see [this section](anki-desktop.md)." +msgstr "" + +#: src/settings.md:50 +msgid "Fetch media on sync" +msgstr "" + +#: src/settings.md:51 +msgid "By default, AnkiDroid will sync sounds and images as well as your cards and review history. If you disable this option, sounds and images will not be downloaded from or uploaded to the sync server by AnkiDroid." +msgstr "" + +#: src/settings.md:54 +msgid "Automatic synchronization" +msgstr "" + +#: src/settings.md:55 +msgid "Enable this option if you want AnkiDroid to sync every time you open and close the app. There is a limit of once every ten minutes for this behavior. Once a sync begins you can cancel it by pressing your device's back button, however it can take some time for the cancellation to take effect." +msgstr "" + +#: src/settings.md:57 +msgid "Users that want more fine-grained control over when sync occurred might like to use a 3rd party app like Tasker to automate synchronization. See the " +msgstr "" + +#: src/settings.md:57 +msgid "API documentation" +msgstr "" + +#: src/settings.md:57 +msgid " for more information on this." +msgstr "" + +#: src/settings.md:59 +msgid "Deck for new cards" +msgstr "" + +#: src/settings.md:60 +msgid "The default of **Use current deck** means that Anki saves the last-used note type for each deck and selects it again then next time you choose the deck (and, in addition, will start with the current deck selected when choosing Add from anywhere). The other option, **Decide by note type,** saves the last-used deck for each note type (and opens the add window to the last-used note type when you choose Add). This may be more convenient if you always use a single note type for each deck." +msgstr "" + +#: src/settings.md:62 +msgid "Language" +msgstr "" + +#: src/settings.md:63 +msgid "Change the language. Note: AnkiDroid translations are contributed by volunteers. If you find missing or incorrect translations, feel free to contribute to the translation project. More details can be found on the " +msgstr "" + +#: src/settings.md:63 +msgid "AnkiDroid Wiki" +msgstr "" + +#: src/settings.md:63 src/advanced-features/custom-fonts.md:15 +msgid "." +msgstr "" + +#: src/settings.md:65 +msgid "Error reporting mode" +msgstr "" + +#: src/settings.md:66 +msgid "Control whether or not AnkiDroid asks your permission before sending error reports to our error reporting system when AnkiDroid crashes. You can also disable the reporting feature entirely if you wish." +msgstr "" + +#: src/settings.md:68 +msgid "Notifications" +msgstr "" + +#: src/settings.md:69 +msgid "This subsection allows you configure when and how AnkiDroid shows alerts in the Android notification bar." +msgstr "" + +#: src/settings.md:71 +msgid "Notify when" +msgstr "" + +#: src/settings.md:72 +msgid "**Never notify** will disable all notifications from AnkiDroid. **Pending messages available** will only show important status updates like when a sync completed. **More than n cards due** will show a notification when you have more than n cards due (requires the widget to be enabled)." +msgstr "" + +#: src/settings.md:74 +msgid "Vibrate" +msgstr "" + +#: src/settings.md:75 +msgid "Checking this will make your device vibrate when showing a notification" +msgstr "" + +#: src/settings.md:77 +msgid "Blink light" +msgstr "" + +#: src/settings.md:78 +msgid "Checking this will make your device light blink when an unread notification exists (if your device has a notification LED)" +msgstr "" + +#: src/settings.md:81 +msgid "Reviewing" +msgstr "" + +#: src/settings.md:83 +msgid "The reviewing screen allows you to customize how AnkiDroid behaves when you're reviewing cards. Note that only the reviewing settings which are applied to **all decks** are shown here. There are more settings related to reviewing which are **deck specific**. These deck specific settings are located in **Deck options**." +msgstr "" + +#: src/settings.md:86 +msgid "New card position" +msgstr "" + +#: src/settings.md:87 +msgid "Controls when new cards are shown: either mixed with, after, or before all reviews." +msgstr "" + +#: src/settings.md:89 +msgid "Start of next day" +msgstr "" + +#: src/settings.md:90 +msgid "Controls when AnkiDroid should start showing the next day's cards. The default setting of 4AM ensures that if you're studying around midnight, you won't have two days worth of cards shown to you in one session. If you stay up very late or wake up very early, you may want to adjust this to a time you're usually sleeping." +msgstr "" + +#: src/settings.md:93 +msgid "Learn ahead limit" +msgstr "" + +#: src/settings.md:94 +msgid "The Learn ahead limit tells AnkiDroid how to behave when there is nothing left to study in the current deck but cards in learning. The default setting of 20 minutes tells AnkiDroid that cards should be shown early if they are due to be shown in less than 20 minutes and there's nothing else to do. If you set this to 0, Anki will always wait the full period, showing the congratulations screen until the remaining cards are ready to be reviewed." +msgstr "" + +#: src/settings.md:96 +msgid "Timebox limit" +msgstr "" + +#: src/settings.md:97 +msgid "Timeboxing is a technique to help you focus by dividing a longer activity (such as a 30 minute study session) into smaller blocks. If you set the timebox time limit to a non-zero number of minutes, AnkiDroid will periodically show a message saying you how many cards you've managed to study during the prescribed time limit." +msgstr "" + +#: src/settings.md:99 +msgid "Display" +msgstr "" + +#: src/settings.md:100 +msgid "This subsection relates to the way cards are displayed during reviewing" +msgstr "" + +#: src/settings.md:102 +msgid "Keep screen on" +msgstr "" + +#: src/settings.md:103 +msgid "Ignore the automatic screen timeout setting in Android to always keep the screen on." +msgstr "" + +#: src/settings.md:105 +msgid "Fullscreen mode" +msgstr "" + +#: src/settings.md:106 +msgid "Switches to an immersive fullscreen mode so that you can use more of the screen. You can choose between **Hide the system bars** which will hide the system status bar, action bar, and bottom navigation buttons. Alternatively you can choose **Hide the system bars and answer buttons**, which will hide everything except for the actual card content itself. You can temporarily exit fullscreen mode by swiping inwards (i.e. down or up) from the system bars." +msgstr "" + +#: src/settings.md:108 +msgid "_Note that immersive fullscreen mode is only supported on Android 4.4+_" +msgstr "" + +#: src/settings.md:110 +msgid "Center align" +msgstr "" + +#: src/settings.md:111 +msgid "By default AnkiDroid tries to show cards exactly as they are shown on Anki Desktop, however if you prefer your cards to be center aligned vertically in AnkiDroid then you can enable this feature." +msgstr "" + +#: src/settings.md:113 +msgid "Show button time" +msgstr "" + +#: src/settings.md:114 +msgid "By default, the answer buttons will display the time a card will next be shown. If you disable this option, the times will not appear, and only labels like **Again**, **Good** and **Easy** will be shown." +msgstr "" + +#: src/settings.md:116 +msgid "Card zoom" +msgstr "" + +#: src/settings.md:117 +msgid "Here you can increase the zoom level of the card content (excluding images). You can use this option if you want to increase the font size for all cards." +msgstr "" + +#: src/settings.md:119 +msgid "Image zoom" +msgstr "" + +#: src/settings.md:120 +msgid "Here you can increase the zoom level of any images embedded in your cards." +msgstr "" + +#: src/settings.md:122 +msgid "Answer button size" +msgstr "" + +#: src/settings.md:123 +msgid "If you find it difficult to press the answer button, you can use this setting to make it bigger." +msgstr "" + +#: src/settings.md:125 +msgid "Show remaining" +msgstr "" + +#: src/settings.md:126 +msgid "Disabling this allows you to hide the card count in the top left of the screen." +msgstr "" + +#: src/settings.md:128 +msgid "Whiteboard" +msgstr "" + +#: src/settings.md:129 +msgid "This subsection controls the whiteboard in the reviewer. Note: the whiteboard must be enabled in each deck individually from the menu in the study screen." +msgstr "" + +#: src/settings.md:132 +msgid "Stroke width" +msgstr "" + +#: src/settings.md:133 +msgid "Control the stroke width of the whiteboard. Reducing the stroke width may allow you to draw with more detail." +msgstr "" + +#: src/settings.md:135 +msgid "Black strokes" +msgstr "" + +#: src/settings.md:136 +msgid "Use black strokes instead of color, which may reduce memory usage. Note: this setting doesn't apply when night mode is enabled." +msgstr "" + +#: src/settings.md:138 +msgid "Automatic display answer" +msgstr "" + +#: src/settings.md:139 +msgid "The automatic display answer feature allows you to have the answer shown automatically after some timeout period. You can also have the next question shown automatically; in this case the card is assumed to be failed (i.e. the again button is automatically chosen)" +msgstr "" + +#: src/settings.md:141 +msgid "Time to show answer" +msgstr "" + +#: src/settings.md:142 +msgid "Time to wait until answer is automatically shown" +msgstr "" + +#: src/settings.md:144 +msgid "Time to show next question" +msgstr "" + +#: src/settings.md:145 +msgid "Time to wait until next question is automatically shown." +msgstr "" + +#: src/settings.md:147 +msgid "Fonts" +msgstr "" + +#: src/settings.md:148 +msgid "In this screen you can change the font used by AnkiDroid, and some scaling options related to fonts. See the [custom fonts](advanced-features/custom-fonts.md) section for more information about using custom fonts." +msgstr "" + +#: src/settings.md:151 +msgid "Default font" +msgstr "" + +#: src/settings.md:152 +msgid "Choose the default font used by the AnkiDroid reviewer. You can add fonts to this list by copying them to the **fonts** folder." +msgstr "" + +#: src/settings.md:154 +msgid "Default font applicability" +msgstr "" + +#: src/settings.md:155 +msgid "The default setting is to only use the default font when no font has been specified in the card styling via Anki Desktop, however you can also force the default font to be applied, ignoring any font specification in the card styling." +msgstr "" + +#: src/settings.md:157 +msgid "Browser and editor font" +msgstr "" + +#: src/settings.md:158 +msgid "The font to be used by the browser and editor" +msgstr "" + +#: src/settings.md:160 +msgid "Card browser font scaling" +msgstr "" + +#: src/settings.md:161 +msgid "Lets you change the font size used in the card browser." +msgstr "" + +#: src/gestures.md:3 +msgid "[Actions](#actions)" +msgstr "" + +#: src/gestures.md:4 +msgid "[No action](#no-action)" +msgstr "" + +#: src/gestures.md:5 +msgid "[Answer button 1](#answer-button-1)" +msgstr "" + +#: src/gestures.md:6 +msgid "[Answer button 2](#answer-button-2)" +msgstr "" + +#: src/gestures.md:7 +msgid "[Answer button 3](#answer-button-3)" +msgstr "" + +#: src/gestures.md:8 +msgid "[Answer button 4](#answer-button-4)" +msgstr "" + +#: src/gestures.md:9 +msgid "[Answer recommended (green)](#answer-recommended-green)" +msgstr "" + +#: src/gestures.md:10 +msgid "[Answer better than recommended](#answer-better-than-recommended)" +msgstr "" + +#: src/gestures.md:12 +msgid "[Edit card](#edit-card)" +msgstr "" + +#: src/gestures.md:13 +msgid "[Mark](#mark)" +msgstr "" + +#: src/gestures.md:14 +msgid "[Lookup expression](#lookup-expression)" +msgstr "" + +#: src/gestures.md:15 +msgid "[Bury card](#bury-card)" +msgstr "" + +#: src/gestures.md:16 +msgid "[Suspend card](#suspend-card)" +msgstr "" + +#: src/gestures.md:17 +msgid "[Delete note](#delete-note)" +msgstr "" + +#: src/gestures.md:18 +msgid "[Play media](#play-media)" +msgstr "" + +#: src/gestures.md:19 +msgid "[Abort learning](#abort-learning)" +msgstr "" + +#: src/gestures.md:20 +msgid "[Bury note](#bury-note)" +msgstr "" + +#: src/gestures.md:21 +msgid "[Suspend note](#suspend-note)" +msgstr "" + +#: src/gestures.md:22 +msgid "[Toggle Red Flag](#toggle-red-flag)" +msgstr "" + +#: src/gestures.md:23 +msgid "[Toggle Orange Flag](#toggle-orange-flag)" +msgstr "" + +#: src/gestures.md:24 +msgid "[Toggle Green Flag](#toggle-green-flag)" +msgstr "" + +#: src/gestures.md:25 +msgid "[Toggle Blue Flag](#toggle-blue-flag)" +msgstr "" + +#: src/gestures.md:26 +msgid "[Remove Flag](#remove-flag)" +msgstr "" + +#: src/gestures.md:27 +msgid "[Advanced](#advanced)" +msgstr "" + +#: src/gestures.md:28 +msgid "[Collection path](#collection-path)" +msgstr "" + +#: src/gestures.md:29 +msgid "[Force full sync](#force-full-sync)" +msgstr "" + +#: src/gestures.md:30 +msgid "[Advanced Statistics](#advanced-statistics)" +msgstr "" + +#: src/gestures.md:31 +msgid "[Workarounds](#workarounds)" +msgstr "" + +#: src/gestures.md:32 +msgid "[Type answer into the card](#type-answer-into-the-card)" +msgstr "" + +#: src/gestures.md:33 +msgid "[Input Workaround](#input-workaround)" +msgstr "" + +#: src/gestures.md:34 +msgid "[Longclick Workaround](#longclick-workaround)" +msgstr "" + +#: src/gestures.md:35 +msgid "[Fix for Hebrew Vowels](#fix-for-hebrew-vowels)" +msgstr "" + +#: src/gestures.md:36 +msgid "[Text to Speech](#text-to-speech)" +msgstr "" + +#: src/gestures.md:37 +msgid "[Lookup Dictionary](#lookup-dictionary)" +msgstr "" + +#: src/gestures.md:38 +msgid "[Reset Languages](#reset-languages)" +msgstr "" + +#: src/gestures.md:39 +msgid "[eReader (up/down buttons)](#ereader-updown-buttons)" +msgstr "" + +#: src/gestures.md:40 +msgid "[eReader Double Scrolling](#ereader-double-scrolling)" +msgstr "" + +#: src/gestures.md:42 +msgid "AnkiDroid allows you to customize the interface, so that actions you perform frequently can be accomplished quickly by using tap and swipe gestures." +msgstr "" + +#: src/gestures.md:45 +msgid "Actions" +msgstr "" + +#: src/gestures.md:46 +msgid "The following gestures can be used:" +msgstr "" + +#: src/gestures.md:48 +msgid "Swipe up" +msgstr "" + +#: src/gestures.md:49 +msgid "Swipe down" +msgstr "" + +#: src/gestures.md:50 +msgid "Swipe left" +msgstr "" + +#: src/gestures.md:51 +msgid "Swipe right" +msgstr "" + +#: src/gestures.md:52 +msgid "Double touch" +msgstr "" + +#: src/gestures.md:53 +msgid "Touch top" +msgstr "" + +#: src/gestures.md:54 +msgid "Touch bottom" +msgstr "" + +#: src/gestures.md:55 +msgid "Touch left" +msgstr "" + +#: src/gestures.md:56 +msgid "Tough right" +msgstr "" + +#: src/gestures.md:58 +msgid "The following actions are available for each gesture:" +msgstr "" + +#: src/gestures.md:60 +msgid "No action" +msgstr "" + +#: src/gestures.md:61 +msgid "Don't do anything. Useful if you want to disable certain swipes, tap zones and so on." +msgstr "" + +#: src/gestures.md:63 +msgid "Answer button 1" +msgstr "" + +#: src/gestures.md:64 +msgid "When the answer screen is shown, choose the red button, indicating you wish to review the card again soon. This is useful when you forgot a card or wish to review it more frequently. When the question is shown, this action (and all other answer actions below) will simply show the answer." +msgstr "" + +#: src/gestures.md:69 +msgid "Answer button 2" +msgstr "" + +#: src/gestures.md:70 +msgid "When the answer screen is shown, choose the second button from the left, generally indicating you found the card hard to remember." +msgstr "" + +#: src/gestures.md:73 +msgid "Answer button 3" +msgstr "" + +#: src/gestures.md:74 +msgid "When the answer screen is shown, choose the third button from the left." +msgstr "" + +#: src/gestures.md:76 +msgid "Answer button 4" +msgstr "" + +#: src/gestures.md:77 +msgid "When the answer screen is shown, choose the fourth button from the left (when applicable)." +msgstr "" + +#: src/gestures.md:79 +msgid "Answer recommended (green)" +msgstr "" + +#: src/gestures.md:80 +msgid "When the answer screen is shown, choose the green button. This is the button you should end up using the most." +msgstr "" + +#: src/gestures.md:83 +msgid "Answer better than recommended" +msgstr "" + +#: src/gestures.md:84 +msgid "When the answer screen is shown, choose the button on the right, indicating you found the card too easy to remember and would like a much longer delay." +msgstr "" + +#: src/gestures.md:89 +msgid "Undoes the last action." +msgstr "" + +#: src/gestures.md:91 +msgid "Edit card" +msgstr "" + +#: src/gestures.md:92 +msgid "Edits the current card." +msgstr "" + +#: src/gestures.md:94 +msgid "Mark" +msgstr "" + +#: src/gestures.md:95 +msgid "Adds a tag called **Marked** the current note, so it can be easily found in a search." +msgstr "" + +#: src/gestures.md:97 +msgid "Lookup expression" +msgstr "" + +#: src/gestures.md:98 +msgid "When the lookup feature is enabled (in advanced settings), lookup an expression in the selected dictionary. Note: the expression needs to be copied to the clipboard before this action will work." +msgstr "" + +#: src/gestures.md:101 +msgid "Bury card" +msgstr "" + +#: src/gestures.md:102 +msgid "Hides the current card from review." +msgstr "" + +#: src/gestures.md:104 +msgid "Suspend card" +msgstr "" + +#: src/gestures.md:105 +msgid "Prevent current card from being shown during review until you unsuspend it via the card browser." +msgstr "" + +#: src/gestures.md:108 +msgid "Deletes the currently shown note and all of its cards." +msgstr "" + +#: src/gestures.md:110 +msgid "Play media" +msgstr "" + +#: src/gestures.md:111 +msgid "Replay any audio on the card." +msgstr "" + +#: src/gestures.md:113 +msgid "Abort learning" +msgstr "" + +#: src/gestures.md:114 +msgid "Stop reviewing and go back to the deck overview page." +msgstr "" + +#: src/gestures.md:116 +msgid "Bury note" +msgstr "" + +#: src/gestures.md:117 +msgid "Bury the current note (i.e. hide it until the next day)." +msgstr "" + +#: src/gestures.md:119 +msgid "Suspend note" +msgstr "" + +#: src/gestures.md:120 +msgid "Suspend the current note (i.e. hide it until you unsuspend it)." +msgstr "" + +#: src/gestures.md:122 +msgid "Toggle Red Flag" +msgstr "" + +#: src/gestures.md:123 +msgid "Enables the red flag, unless the flag is already red, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:125 +msgid "Toggle Orange Flag" +msgstr "" + +#: src/gestures.md:126 +msgid "Enables the orange flag, unless the flag is already orange, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:128 +msgid "Toggle Green Flag" +msgstr "" + +#: src/gestures.md:129 +msgid "Enables the green flag, unless the flag is already green, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:131 +msgid "Toggle Blue Flag" +msgstr "" + +#: src/gestures.md:132 +msgid "Enables the blue flag, unless the flag is already blue, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:134 +msgid "Remove Flag" +msgstr "" + +#: src/gestures.md:135 +msgid "Removes the flag from the card." +msgstr "" + +#: src/gestures.md:137 +msgid "Advanced" +msgstr "" + +#: src/gestures.md:138 +msgid "Some less common features for advanced users are shown here" +msgstr "" + +#: src/gestures.md:140 +msgid "Collection path" +msgstr "" + +#: src/gestures.md:141 +msgid "Change the location where AnkiDroid's data is stored (not recommended)" +msgstr "" + +#: src/gestures.md:143 +msgid "Force full sync" +msgstr "" + +#: src/gestures.md:144 +msgid "Tap this item to force a full upload or download on the next sync (for example, because you accidentally deleted a deck on one side and want to restore the deck rather than having its deletion synchronized)." +msgstr "" + +#: src/gestures.md:147 +msgid "Take into account the effect of future reviews in the **Forecast** graph. More info [here](advanced-features/advanced-statistics.md)." +msgstr "" + +#: src/gestures.md:149 +msgid "Workarounds" +msgstr "" + +#: src/gestures.md:151 +msgid "Type answer into the card" +msgstr "" + +#: src/gestures.md:153 +msgid "If you have set up your cards to ask you to type in the answer (as explained in [this section of the desktop manual](https://docs.ankiweb.net/templates/intro.html)), AnkiDroid will display a keyboard on such cards and allow you to check your answer." +msgstr "" + +#: src/gestures.md:155 +msgid "In order to improve user experience when working with the whiteboard and gestures, we use a typing box separate from the card, which is inconsistent with the way the feature works on Anki Desktop." +msgstr "" + +#: src/gestures.md:157 +msgid "For full consistency with Anki Desktop, you can enable this option which allows you to save screen area, and choose an appropriate font (e.g. Japanese vs Chinese) for the input box." +msgstr "" + +#: src/gestures.md:159 +msgid "Input Workaround" +msgstr "" + +#: src/gestures.md:160 +msgid "Some older devices couldn't gain focus into the text input box for typed-answer fields, so this was added (Hidden for API > 14)." +msgstr "" + +#: src/gestures.md:162 +msgid "Longclick Workaround" +msgstr "" + +#: src/gestures.md:163 +msgid "Some older devices couldn't detect longclick for initiating selecting/copying of text, so this was added (Hidden for API > 10)." +msgstr "" + +#: src/gestures.md:165 +msgid "Fix for Hebrew Vowels" +msgstr "" + +#: src/gestures.md:166 +msgid "Some older devices couldn't render Hebrew text, so this feature was added which allows the user to download and install a Hebrew font which is known to work (Hidden for API > 15)." +msgstr "" + +#: src/gestures.md:168 +msgid "Text to Speech" +msgstr "" + +#: src/gestures.md:169 +msgid "Enable this option to have Android read out all the text on your flashcards using the default text to speech engine. Google's built-in TTS engine should work; 3rd party TTS engines may or may not. AnkiDroid will ask you to select the language for the front and back of your cards once for each deck on the first time you review a card in that deck. To change the language or disable TTS for a given deck after making your initial choice, you'll need to use the **reset languages** option described below and reconfigure for each deck." +msgstr "" + +#: src/gestures.md:173 +msgid "Alternatively, if you want only fragments of cards to be read aloud, or if you want to set the TTS language for multiple decks at once, you can insert `` tags into [card templates](advanced-features/customizing-card-layout.md). For example, with the following template for the back of the card" +msgstr "" + +#: src/gestures.md:178 +msgid "answer" +msgstr "" + +#: src/gestures.md:180 src/gestures.md:194 +msgid "\"android\"" +msgstr "" + +#: src/gestures.md:180 src/gestures.md:194 +msgid "\"en_GB\"" +msgstr "" + +#: src/gestures.md:185 +msgid "only the `EnglishTranslation` field will be read aloud in a British English voice; the `Example` field, lying outside the `` tag, won't be read aloud. Every `` tag needs to have the following two attributes:" +msgstr "" + +#: src/gestures.md:187 +msgid "**`service`**: should be set to **`android`**, otherwise the contents of the **``** tag won't be read aloud;" +msgstr "" + +#: src/gestures.md:188 +msgid "**`voice`**: used to select the TTS language; should be a [two- or three- letter language code](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes), optionally followed by an underscore and a [two-letter country or region code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). A frequently updated list of languages supported by the Google TTS engine can be found on its [Wikipedia page](https://en.wikipedia.org/wiki/Google_Text-to-Speech)." +msgstr "" + +#: src/gestures.md:190 +msgid "To make both AnkiDroid and the [AwesomeTTS](https://ankiatts.appspot.com) plugin to the desktop application use a TTS engine to read aloud certain card fragments, put the `` tag inside the `` tag recognised by AwesomeTTS, or vice versa. An example:" +msgstr "" + +#: src/gestures.md:193 +msgid "\"sapi5js\"" +msgstr "" + +#: src/gestures.md:193 +msgid "\"39\"" +msgstr "" + +#: src/gestures.md:193 src/gestures.md:193 +msgid "\"0\"" +msgstr "" + +#: src/gestures.md:193 +msgid "\"Microsoft David Desktop\"" +msgstr "" + +#: src/gestures.md:193 +msgid "\"100\"" +msgstr "" + +#: src/gestures.md:200 +msgid "AnkiDroid automatically ignores `` tags selecting an unknown TTS service. In contrast, AwesomeTTS may display a warning message on encountering the `` tag; to suppress it, uncheck the two _Show errors_ checkboxes on the _Playback_ tab of the _AwesomeTTS: Configuration_ dialog in the desktop application." +msgstr "" + +#: src/gestures.md:202 +msgid "_This feature may be removed in the future in favor of a separately downloadable plugin._" +msgstr "" + +#: src/gestures.md:204 +msgid "Lookup Dictionary" +msgstr "" + +#: src/gestures.md:205 +msgid "Dictionary to use to lookup words copied to the clipboard in the reviewer. After setting up a dictionary, do the following to perform the lookup:" +msgstr "" + +#: src/gestures.md:207 +msgid "Longclick on the text you want to copy in the reviewer" +msgstr "" + +#: src/gestures.md:208 +msgid "After selecting the word you want to copy, press the **copy** icon in the app bar at the top of the screen" +msgstr "" + +#: src/gestures.md:209 +msgid "Tap once anywhere on the flashcard" +msgstr "" + +#: src/gestures.md:210 +msgid "A magnifying glass icon should appear, which performs the lookup when clicked" +msgstr "" + +#: src/gestures.md:212 +msgid "Alternatively, the lookup action can be performed via a gesture." +msgstr "" + +#: src/gestures.md:214 src/gestures.md:222 +msgid "_This feature will likely be removed in the future in favor of a plugin_" +msgstr "" + +#: src/gestures.md:216 +msgid "Reset Languages" +msgstr "" + +#: src/gestures.md:217 +msgid "Useful for resetting the TTS language" +msgstr "" + +#: src/gestures.md:219 +msgid "eReader (up/down buttons)" +msgstr "" + +#: src/gestures.md:220 +msgid "Support for eReader hardware buttons (see [issue 1625](https://github.com/ankidroid/Anki-Android/issues/1625))" +msgstr "" + +#: src/gestures.md:224 +msgid "eReader Double Scrolling" +msgstr "" + +#: src/gestures.md:225 +msgid "Double the scrolling distance when using the eReader hardware buttons" +msgstr "" + +#: src/note-formatting-toolbar.md:3 +msgid "The note formatting toolbar contains basic text formatting buttons (Bold, Italic, Underline, Horizontal Line, Insert Title, Change Font Size, [Insert MathJax](advanced-features/mathjax.md) and Insert Cloze Deletion)." +msgstr "" + +#: src/note-formatting-toolbar.md:5 +msgid "It also allows the addition of user-defined toolbar buttons using HTML. HTML is a powerful language allowing nearly endless customization of your cards. [Our wiki](https://github.com/ankidroid/Anki-Android/wiki/Note-Editor-Toolbar-HTML-Samples) contains common code samples to get you started." +msgstr "" + +#: src/note-formatting-toolbar.md:7 +msgid "A user-defined toolbar button can be removed by long pressing the button and selecting **Delete**." +msgstr "" + +#: src/keyboard-shortcuts.md:3 +msgid "Home Screen" +msgstr "" + +#: src/keyboard-shortcuts.md:5 src/keyboard-shortcuts.md:13 +#: src/keyboard-shortcuts.md:32 src/keyboard-shortcuts.md:53 +#: src/keyboard-shortcuts.md:64 +msgid "Shortcut" +msgstr "" + +#: src/keyboard-shortcuts.md:5 src/keyboard-shortcuts.md:13 +#: src/keyboard-shortcuts.md:32 src/keyboard-shortcuts.md:53 +#: src/keyboard-shortcuts.md:64 +msgid "Purpose" +msgstr "" + +#: src/keyboard-shortcuts.md:7 src/keyboard-shortcuts.md:55 +msgid "A" +msgstr "" + +#: src/keyboard-shortcuts.md:7 +msgid "Add Note" +msgstr "" + +#: src/keyboard-shortcuts.md:8 src/keyboard-shortcuts.md:40 +msgid "B" +msgstr "" + +#: src/keyboard-shortcuts.md:9 +msgid "Y" +msgstr "" + +#: src/keyboard-shortcuts.md:9 +msgid "Sync" +msgstr "" + +#: src/keyboard-shortcuts.md:11 +msgid "Reviewer" +msgstr "" + +#: src/keyboard-shortcuts.md:15 src/keyboard-shortcuts.md:49 +msgid "1" +msgstr "" + +#: src/keyboard-shortcuts.md:15 src/keyboard-shortcuts.md:15 +#: src/keyboard-shortcuts.md:15 src/keyboard-shortcuts.md:20 +#: src/keyboard-shortcuts.md:27 +msgid "," +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "2" +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "3" +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "4" +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "Press the nth answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:16 +msgid "Gamepad Y" +msgstr "" + +#: src/keyboard-shortcuts.md:16 +msgid "Flip Card/Press the first answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:17 +msgid "Gamepad X" +msgstr "" + +#: src/keyboard-shortcuts.md:17 +msgid "Flip Card/Press the second answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:18 +msgid "Gamepad B" +msgstr "" + +#: src/keyboard-shortcuts.md:18 +msgid "Flip Card/Press the third answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:19 +msgid "Gamepad A" +msgstr "" + +#: src/keyboard-shortcuts.md:19 +msgid "Flip Card/Press the fourth answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:20 +msgid "Space" +msgstr "" + +#: src/keyboard-shortcuts.md:20 src/keyboard-shortcuts.md:34 +msgid "Enter" +msgstr "" + +#: src/keyboard-shortcuts.md:20 +msgid "Flip Card/Answer Good" +msgstr "" + +#: src/keyboard-shortcuts.md:21 +msgid "e" +msgstr "" + +#: src/keyboard-shortcuts.md:21 src/keyboard-shortcuts.md:56 +msgid "Edit Note" +msgstr "" + +#: src/keyboard-shortcuts.md:22 +msgid "\\*" +msgstr "" + +#: src/keyboard-shortcuts.md:22 src/keyboard-shortcuts.md:58 +msgid "Mark Note" +msgstr "" + +#: src/keyboard-shortcuts.md:23 +msgid "\\-" +msgstr "" + +#: src/keyboard-shortcuts.md:23 +msgid "Bury Card" +msgstr "" + +#: src/keyboard-shortcuts.md:24 +msgid "=" +msgstr "" + +#: src/keyboard-shortcuts.md:24 +msgid "Bury Note" +msgstr "" + +#: src/keyboard-shortcuts.md:25 +msgid "@" +msgstr "" + +#: src/keyboard-shortcuts.md:25 +msgid "Suspend Card" +msgstr "" + +#: src/keyboard-shortcuts.md:26 +msgid "!" +msgstr "" + +#: src/keyboard-shortcuts.md:26 +msgid "Suspend Note" +msgstr "" + +#: src/keyboard-shortcuts.md:27 +msgid "r" +msgstr "" + +#: src/keyboard-shortcuts.md:27 +msgid "F5" +msgstr "" + +#: src/keyboard-shortcuts.md:27 +msgid "Replay Media" +msgstr "" + +#: src/keyboard-shortcuts.md:28 +msgid "z" +msgstr "" + +#: src/keyboard-shortcuts.md:30 +msgid "Note Editor" +msgstr "" + +#: src/keyboard-shortcuts.md:34 src/keyboard-shortcuts.md:39 +#: src/keyboard-shortcuts.md:40 src/keyboard-shortcuts.md:41 +#: src/keyboard-shortcuts.md:42 src/keyboard-shortcuts.md:43 +#: src/keyboard-shortcuts.md:44 src/keyboard-shortcuts.md:45 +#: src/keyboard-shortcuts.md:46 src/keyboard-shortcuts.md:47 +#: src/keyboard-shortcuts.md:48 src/keyboard-shortcuts.md:49 +#: src/keyboard-shortcuts.md:55 src/keyboard-shortcuts.md:56 +#: src/keyboard-shortcuts.md:57 src/keyboard-shortcuts.md:58 +#: src/keyboard-shortcuts.md:59 src/keyboard-shortcuts.md:66 +msgid "Ctrl" +msgstr "" + +#: src/keyboard-shortcuts.md:34 src/keyboard-shortcuts.md:39 +#: src/keyboard-shortcuts.md:40 src/keyboard-shortcuts.md:41 +#: src/keyboard-shortcuts.md:42 src/keyboard-shortcuts.md:43 +#: src/keyboard-shortcuts.md:44 src/keyboard-shortcuts.md:45 +#: src/keyboard-shortcuts.md:46 src/keyboard-shortcuts.md:47 +#: src/keyboard-shortcuts.md:47 src/keyboard-shortcuts.md:48 +#: src/keyboard-shortcuts.md:48 src/keyboard-shortcuts.md:48 +#: src/keyboard-shortcuts.md:49 src/keyboard-shortcuts.md:55 +#: src/keyboard-shortcuts.md:56 src/keyboard-shortcuts.md:57 +#: src/keyboard-shortcuts.md:58 src/keyboard-shortcuts.md:59 +#: src/keyboard-shortcuts.md:59 src/keyboard-shortcuts.md:66 +msgid "+" +msgstr "" + +#: src/keyboard-shortcuts.md:34 +msgid "Save Note" +msgstr "" + +#: src/keyboard-shortcuts.md:35 src/keyboard-shortcuts.md:57 +msgid "D" +msgstr "" + +#: src/keyboard-shortcuts.md:35 +msgid "Select Deck" +msgstr "" + +#: src/keyboard-shortcuts.md:36 +msgid "L" +msgstr "" + +#: src/keyboard-shortcuts.md:36 src/keyboard-shortcuts.md:62 +msgid "Card Template Editor" +msgstr "" + +#: src/keyboard-shortcuts.md:37 +msgid "N" +msgstr "" + +#: src/keyboard-shortcuts.md:37 +msgid "Select Note Type" +msgstr "" + +#: src/keyboard-shortcuts.md:38 +msgid "T" +msgstr "" + +#: src/keyboard-shortcuts.md:38 +msgid "Edit Tags" +msgstr "" + +#: src/keyboard-shortcuts.md:39 src/keyboard-shortcuts.md:66 +msgid "P" +msgstr "" + +#: src/keyboard-shortcuts.md:39 +msgid "Preview Note" +msgstr "" + +#: src/keyboard-shortcuts.md:40 +msgid "Bold" +msgstr "" + +#: src/keyboard-shortcuts.md:41 +msgid "I" +msgstr "" + +#: src/keyboard-shortcuts.md:41 +msgid "Italic" +msgstr "" + +#: src/keyboard-shortcuts.md:42 +msgid "U" +msgstr "" + +#: src/keyboard-shortcuts.md:42 +msgid "Underline" +msgstr "" + +#: src/keyboard-shortcuts.md:43 src/keyboard-shortcuts.md:59 +msgid "R" +msgstr "" + +#: src/keyboard-shortcuts.md:43 +msgid "Insert Horizontal Rule" +msgstr "" + +#: src/keyboard-shortcuts.md:44 +msgid "H" +msgstr "" + +#: src/keyboard-shortcuts.md:44 +msgid "Insert Title" +msgstr "" + +#: src/keyboard-shortcuts.md:45 +msgid "F" +msgstr "" + +#: src/keyboard-shortcuts.md:45 +msgid "Change Font Size" +msgstr "" + +#: src/keyboard-shortcuts.md:46 +msgid "M" +msgstr "" + +#: src/keyboard-shortcuts.md:46 +msgid "Insert MathJax Equation" +msgstr "" + +#: src/keyboard-shortcuts.md:47 src/keyboard-shortcuts.md:48 +msgid "Shift" +msgstr "" + +#: src/keyboard-shortcuts.md:47 src/keyboard-shortcuts.md:48 +msgid "C" +msgstr "" + +#: src/keyboard-shortcuts.md:47 +msgid "Insert New Cloze Deletion" +msgstr "" + +#: src/keyboard-shortcuts.md:48 src/keyboard-shortcuts.md:59 +msgid "Alt" +msgstr "" + +#: src/keyboard-shortcuts.md:48 +msgid "Insert Cloze Deletion using existing number" +msgstr "" + +#: src/keyboard-shortcuts.md:49 +msgid ".." +msgstr "" + +#: src/keyboard-shortcuts.md:49 +msgid "0" +msgstr "" + +#: src/keyboard-shortcuts.md:49 +msgid "Insert User-Defined HTML" +msgstr "" + +#: src/keyboard-shortcuts.md:55 +msgid "Select All" +msgstr "" + +#: src/keyboard-shortcuts.md:56 +msgid "E" +msgstr "" + +#: src/keyboard-shortcuts.md:57 +msgid "Change Deck" +msgstr "" + +#: src/keyboard-shortcuts.md:58 +msgid "K" +msgstr "" + +#: src/keyboard-shortcuts.md:66 +msgid "Preview Changed" +msgstr "" + +#: src/rtl.md:3 +msgid "Anki and AnkiDroid have full support for RTL languages such as Arabic, Hebrew, and Persian." +msgstr "" + +#: src/rtl.md:5 +msgid "Editing Fields as RTL" +msgstr "" + +#: src/rtl.md:6 +msgid "Fields can be marked as RTL (currently possible only from Anki Desktop) for RTL editing. When a field is marked as RTL, then the text is right-aligned in editing fields and punctuation is correctly displayed at the end (left) of sentences. Text that contains blocks of LTR characters will be properly displayed as well, with the beginning of the sentence appearing to the right of the LTR block and the end of the sentence being displayed to the left of the LTR block." +msgstr "" + +#: src/rtl.md:8 +msgid "Directionality is especially important for editing and creating RTL cloze deletions as the cloze format includes both neutral and LTR markup characters. Therefore it is recommended to use a separate note type for LTR cloze deletions and RTL cloze deletions." +msgstr "" + +#: src/rtl.md:10 +msgid "Displaying Fields as RTL during study" +msgstr "" + +#: src/rtl.md:11 +msgid "To display a field as RTL, with proper right-alignment and directionality (punctuation at left of sentences, proper flow around LTR blocks), the field should be wrapped in a div or span element with the RTL directionality specified:" +msgstr "" + +#: src/rtl.md:14 +msgid "\"rtl\"" +msgstr "" + +#: src/anki-desktop.md:3 +msgid "[Via Cloud Sync](#via-cloud-sync)" +msgstr "" + +#: src/anki-desktop.md:4 +msgid "[Sync existing decks into a new AnkiDroid install](#sync-existing-decks-into-a-new-ankidroid-install)" +msgstr "" + +#: src/anki-desktop.md:5 +msgid "[Sync from AnkiDroid to Computer](#sync-from-ankidroid-to-computer)" +msgstr "" + +#: src/anki-desktop.md:7 +msgid "Anki has a free cloud synchronization service called AnkiWeb that makes it easy to keep your card decks in sync between mobile devices and your computer. If you cannot use sync for some reason, it's also possible to use USB, though this method is more laborious." +msgstr "" + +#: src/anki-desktop.md:9 +msgid "Note that AnkiDroid is not affiliated with Anki Desktop or AnkiWeb. AnkiDroid is based on Anki Desktop but it is developed by an entirely separate community of volunteers." +msgstr "" + +#: src/anki-desktop.md:11 +msgid "![AnkiDesktop.png](img/AnkiDesktop.png)" +msgstr "" + +#: src/anki-desktop.md:13 +msgid "Via Cloud Sync" +msgstr "" + +#: src/anki-desktop.md:14 +msgid "Before you can use AnkiWeb, you'll first need to create an account by visiting [https://ankiweb.net](https://ankiweb.net) and clicking the **Sign Up** button. If you have used AnkiWeb in the past, you can skip this step. After signing up, see the corresponding instructions below, depending on whether you are trying to get your existing decks into AnkiDroid or out of AnkiDroid." +msgstr "" + +#: src/anki-desktop.md:16 +msgid "Sync existing decks into a new AnkiDroid install" +msgstr "" + +#: src/anki-desktop.md:17 +msgid "In this scenario you have some existing Anki decks that you want to copy into a new install of AnkiDroid by syncing with AnkiWeb. Open the Anki client with your existing decks (usually this would be Anki desktop, but it could also mean a version of AnkiDroid you have been using on another device), and click the synchronization button (which has two arrows in a circle) at the top right of the deck list." +msgstr "" + +#: src/anki-desktop.md:19 +msgid "If you have never used AnkiWeb before you will need to enter your credentials if prompted, and then press the **Upload to AnkiWeb** button to confirm overwriting the empty collection on AnkiWeb with your existing decks in Anki. Anki will upload all your cards, images and audio to AnkiWeb. If you have a lot of media, this may take some time." +msgstr "" + +#: src/anki-desktop.md:21 +msgid "Once the synchronization has completed, open AnkiDroid in the device that you are trying to copy the existing decks into, and tap the **Sync** button in the app bar at the top of the main [deck list](deck-picker.md). After entering your AnkiWeb credentials, AnkiDroid will download all your cards and media, and remember your login information for next time." +msgstr "" + +#: src/anki-desktop.md:24 +msgid "Note that if you have any existing material in AnkiDroid before attempting to sync, you may be shown a message asking you to choose to either download from AnkiWeb, or upload to AnkiWeb. If you are happy to lose the cards in AnkiDroid then simply choose **Download**. If you need to merge the existing cards with AnkiDroid then you should see the [resolving conflicts](ankiweb-conflicts.md#dealing-with-merge-conflicts-on-ankiweb) section before continuing." +msgstr "" + +#: src/anki-desktop.md:26 +msgid "After the first synchronization has completed, you can click the sync button again any time you wish to synchronize your changes to the cloud. Only changes made since the previous sync will be sent, so subsequent syncs are a lot faster." +msgstr "" + +#: src/anki-desktop.md:28 +msgid "If you add some new cards on the desktop computer and want to sync them to AnkiDroid, you'd repeat the same basic process: sync on desktop (or close the program, as it syncs automatically on close by default), and then tap the sync button on AnkiDroid." +msgstr "" + +#: src/anki-desktop.md:30 +msgid "Sync from AnkiDroid to Computer" +msgstr "" + +#: src/anki-desktop.md:31 +msgid "The process of syncing from AnkiDroid to computer is essentially the same as syncing from computer to AnkiDroid, but in reverse." +msgstr "" + +#: src/anki-desktop.md:33 +msgid "From the [deck list](deck-picker.md), tap the sync button in the top right (it has two arrows in a circle). If it's your first time using AnkiWeb, you may need to enter your login credentials, and then press the \"upload\" button to upload your AnkiDroid collection to AnkiWeb." +msgstr "" + +#: src/anki-desktop.md:35 +msgid "Once the synchronization has completed, open Anki Desktop on your computer and press the sync button there (with two arrows in a circle), and Anki will download your collection." +msgstr "" + +#: src/ankiweb-conflicts.md:2 +msgid "Although it should not happen often, occasionally you may end up in the position where your cards on AnkiDroid can not be automatically merged with the cards on AnkiWeb. In this case it's necessary to choose to either upload to or download from AnkiWeb, which would overwrite any changes on the other side. " +msgstr "" + +#: src/ankiweb-conflicts.md:4 +msgid "If you have new cards on both sides which you want to keep, before syncing you can [export a deck package](exporting.md) for each deck containing new cards from AnkiDroid, then when you do the sync choose **download** to download from AnkiWeb. After the synchronization has completed, you can import the decks you previously exported from AnkiDroid, as per the [importing section](importing/importing-anki-files.md)." +msgstr "" + +#: src/ankiweb-conflicts.md:6 +msgid "Via USB" +msgstr "" + +#: src/ankiweb-conflicts.md:8 +msgid "If you don't have regular internet access, it's still possible to copy decks back and forth to your device, by using USB." +msgstr "" + +#: src/ankiweb-conflicts.md:10 +msgid "The USB method works by importing or exporting all your decks at once. This means that unlike syncing via AnkiWeb, you can't make changes from two locations at once and then merge them. Instead, if you wish to add cards on the desktop, you need to make sure you export the latest version of your collection from your mobile device first, or you'll end up losing any reviews done on the mobile device." +msgstr "" + +#: src/ankiweb-conflicts.md:12 +msgid "Thus the workflow you would typically use is to export your collection from your mobile device and import it into the desktop, make modifications on the desktop, and then export your collection and import it back into your mobile device." +msgstr "" + +#: src/ankiweb-conflicts.md:14 +msgid "AnkiDroid can't directly import text files. If you wish to do that, you'll need to do that with the desktop program, and then import your collection into AnkiDroid." +msgstr "" + +#: src/ankiweb-conflicts.md:16 +msgid "Copy all decks from Anki Desktop to AnkiDroid via USB" +msgstr "" + +#: src/ankiweb-conflicts.md:18 +msgid "On your computer:" +msgstr "" + +#: src/ankiweb-conflicts.md:19 +msgid "Open the desktop program." +msgstr "" + +#: src/ankiweb-conflicts.md:20 +msgid "Choose File>Export from the menu." +msgstr "" + +#: src/ankiweb-conflicts.md:21 +msgid "Click the **Export...** button. Make sure to leave **all decks** selected, as it's not possible to import individual decks into AnkiDroid. **Include scheduling information** must also remain checked." +msgstr "" + +#: src/ankiweb-conflicts.md:22 +msgid "Anki will automatically create a collection.apkg on your desktop. If the file is named something else, please see the previous step again." +msgstr "" + +#: src/ankiweb-conflicts.md:23 +msgid "Connect your Android device to your computer via the USB cable." +msgstr "" + +#: src/ankiweb-conflicts.md:24 +msgid "Open the file explorer on your computer and view the contents of your Android device." +msgstr "" + +#: src/ankiweb-conflicts.md:25 +msgid "Locate the AnkiDroid folder." +msgstr "" + +#: src/ankiweb-conflicts.md:26 +msgid "Drag the collection.apkg file from your desktop into this AnkiDroid folder." +msgstr "" + +#: src/ankiweb-conflicts.md:28 +msgid "Then in AnkiDroid:" +msgstr "" + +#: src/ankiweb-conflicts.md:29 +msgid "From the main decks screen, tap **Import file** from the menu" +msgstr "" + +#: src/ankiweb-conflicts.md:30 +msgid "Tap on **Collection** and then confirm" +msgstr "" + +#: src/ankiweb-conflicts.md:32 +msgid "Once complete, the decks on your device will have been replaced with the decks from your desktop. See the section on [importing apkg files](importing/importing-anki-files.md) for more help with importing." +msgstr "" + +#: src/ankiweb-conflicts.md:35 +msgid "Copy all decks from AnkiDroid to Anki Desktop via USB" +msgstr "" + +#: src/ankiweb-conflicts.md:37 +msgid "The process to copy your decks from AnkiDroid to Anki Desktop is essentially the same as above, but in reverse." +msgstr "" + +#: src/ankiweb-conflicts.md:38 +msgid "Start with your device disconnected from USB" +msgstr "" + +#: src/ankiweb-conflicts.md:39 +msgid "Choose **Export collection** from the main menu in the Deck Screen" +msgstr "" + +#: src/ankiweb-conflicts.md:40 +msgid "Ensure **Include scheduling information** remains checked and press **OK**" +msgstr "" + +#: src/ankiweb-conflicts.md:41 +msgid "Connect device to computer using USB" +msgstr "" + +#: src/ankiweb-conflicts.md:42 +msgid "Copy the **collection.apkg** from the path specified in the message to the desktop on your computer" +msgstr "" + +#: src/ankiweb-conflicts.md:43 +msgid "Double click on the file to import into Anki Desktop" +msgstr "" + +#: src/ankiweb-conflicts.md:45 +msgid "See the [exporting section](exporting.md) below for more detailed information on exporting from AnkiDroid." +msgstr "" + +#: src/advanced-features/intro.md:3 +msgid "[MathJax Support](mathjax.md)" +msgstr "" + +#: src/advanced-features/intro.md:4 +msgid "[Reverse Cards](reverse-cards.md)" +msgstr "" + +#: src/advanced-features/intro.md:5 +msgid "[Custom Fonts](custom-fonts.md)" +msgstr "" + +#: src/advanced-features/intro.md:6 +msgid "[Custom Card Layout](customizing-card-layout.md)" +msgstr "" + +#: src/advanced-features/intro.md:7 +msgid "[Type in the answer feature](type-in-answer.md)" +msgstr "" + +#: src/advanced-features/intro.md:8 +msgid "[Advanced Statistics](advanced-statistics.md)" +msgstr "" + +#: src/advanced-features/intro.md:9 +msgid "[Reminders](reminders.md)" +msgstr "" + +#: src/advanced-features/intro.md:10 +msgid "[Automatic Language Selection](set-language-hint.md)" +msgstr "" + +#: src/advanced-features/mathjax.md:2 +msgid "Mathjax is a modern typesetting library for math and chemistry. AnkiDroid supports Mathjax cards out of the box. Mathjax is configured to expect TeX formatting, with `\\(` and `\\)` delimiting inline equations and `\\[` and `\\]` for display equations." +msgstr "" + +#: src/advanced-features/mathjax.md:4 +msgid "To try it out, enter the following into a field:" +msgstr "" + +#: src/advanced-features/mathjax.md:10 +msgid "and preview the card." +msgstr "" + +#: src/advanced-features/mathjax.md:12 +msgid "For more details, see [Mathjax Support](https://docs.ankiweb.net/math.html#mathjax) in the Anki Manual." +msgstr "" + +#: src/advanced-features/mathjax.md:14 +msgid "[Previous workarounds](https://www.reddit.com/r/Anki/comments/ar7lxd/how_to_load_mathjax_color_extension_on_anki/egm6u5j) are no longer necessary as of AnkiDroid 2.9." +msgstr "" + +#: src/advanced-features/reverse-cards.md:3 +msgid "The Anki system has [built-in note types which allow you to review cards in both directions](https://docs.ankiweb.net/getting-started.html#note-types). When [creating new material](../adding-notes.md) in AnkiDroid, you should choose one of these note types, such as **Basic (and reversed card)**, which will automatically generate a reverse card for you." +msgstr "" + +#: src/advanced-features/reverse-cards.md:6 +msgid "![ReverseNoteType](../img/ReverseNoteType.png)" +msgstr "" + +#: src/advanced-features/reverse-cards.md:8 +msgid "If you used the wrong note type when adding your material, you can change the note type via the [edit note screen](../editing-notes.md), or you can change the note type for multiple cards at once using the browser in Anki Desktop. To do this, follow the instructions in the [syncing with Anki Desktop section](../anki-desktop.md), then in Anki Desktop open the browser, select the cards you want to change, then choose **Change note type** from the menu." +msgstr "" + +#: src/advanced-features/reverse-cards.md:11 +msgid "Alternatively, if your cards are using a custom card layout which doesn't include a reverse card, you can edit the note type to include a reverse card by following the instructions in the [reverse cards section](https://docs.ankiweb.net/templates/generation.html#reverse-cards) of the Anki Desktop user manual. While less convenient than using Anki Desktop, it is possible to edit the note type from directly within AnkiDroid as well; see the [custom card layout section](../advanced-features/customizing-card-layout.md) for more on this." +msgstr "" + +#: src/advanced-features/custom-fonts.md:3 +msgid "AnkiDroid allows you to use non-system fonts on your cards. To set them up properly, it is strongly recommended to use the official method that is used by Anki Desktop. Please see [the corresponding section in the desktop manual](https://docs.ankiweb.net/templates/styling.html#installing-fonts) for more information." +msgstr "" + +#: src/advanced-features/custom-fonts.md:5 +msgid "Alternatively, you can create a new subfolder **fonts** in the main AnkiDroid directory (i.e. the folder which contains the **backups** subfolder, specified under `Settings > Advanced > AnkiDroid directory)`, copy a compatible font file (i.e. .ttf) there, and then set this as the default font under `Settings > Fonts > Default font`. " +msgstr "" + +#: src/advanced-features/custom-fonts.md:7 +msgid "**Note:** this method will change the default font for **all** of your cards, whereas the official method can be more specific. Also, if you sync with AnkiWeb, using this method will lead to cards being displayed differently on different devices." +msgstr "" + +#: src/advanced-features/custom-fonts.md:9 +msgid "Only fonts in the ttf format are officially supported in Anki/AnkiDroid; the [Google Noto](https://fonts.google.com/noto) font set is highly recommended for all languages, and some other free fonts can be found [here](https://github.com/ankidroid/Anki-Android/wiki/Freely-distributable-fonts)." +msgstr "" + +#: src/advanced-features/custom-fonts.md:11 +msgid "Please note that AnkiDroid has to load the entire font into memory in order to use it, and fonts for Asian languages can be quite large. If you have an older device and notice AnkiDroid crashing frequently after installing a font, you may have exceeded your device's memory limits. For Google Noto, it's not recommended to use the combined CJK font, rather get the individual languages [separately from here](https://github.com/googlei18n/noto-cjk)." +msgstr "" + +#: src/advanced-features/custom-fonts.md:13 +msgid "**Note 1**: If you have **Fetch media on sync** disabled, you may need to manually copy the font file from Anki Desktop to your AnkiDroid/collection.media folder." +msgstr "" + +#: src/advanced-features/custom-fonts.md:15 +msgid "**Note 2**: If you can't get your font to work after following the steps in here and the Anki Desktop manual, please refer to the FAQ for " +msgstr "" + +#: src/advanced-features/custom-fonts.md:15 +msgid "detailed steps on how to debug font issues" +msgstr "" + +#: src/advanced-features/customizing-card-layout.md:2 +msgid "The layout of flashcards is completely customizable, although this is an advanced topic with a fairly steep learning curve, and you will probably find it a lot more convenient to do the customization with [Anki Desktop](../anki-desktop.md). " +msgstr "" + +#: src/advanced-features/customizing-card-layout.md:4 +msgid "The [card templates section](https://docs.ankiweb.net/templates/intro.html) of the Anki Desktop manual has detailed instructions on how to edit note types, and most of the actions discussed there are also available from AnkiDroid by tapping **cards** at the bottom of the note editor, or choosing the **manage note types** option in the deck picker. Since detailed information on customizing card layouts is available in the Anki desktop manual, it will not be repeated here." +msgstr "" + +#: src/advanced-features/customizing-card-layout.md:6 +msgid "There is an [advanced formatting page](https://github.com/ankidroid/Anki-Android/wiki/Advanced-formatting) on the AnkiDroid wiki with various hints on how you can get the most out of your card formatting, and we encourage you to read it, and edit it freely if you have any tips that you'd like to share with the community." +msgstr "" + +#: src/advanced-features/type-in-answer.md:3 +msgid "AnkiDroid allows you to type in the correct answer and then compare it to the right answer. You have to set this up with Anki desktop, as described in the [Anki Desktop manual](https://docs.ankiweb.net/templates/fields.html#checking-your-answer)." +msgstr "" + +#: src/advanced-features/type-in-answer.md:5 +msgid "Anki desktop replaces the **{{type:NN}}** field on the front of a card with an input box in the card. On AnkiDroid it is replaced with a **......** prompt instead, and a text input box is shown at the bottom. The comparison between typed text and the correct text is shown on the answer side in place of the **{{type:NN}}** field there, like on Anki desktop." +msgstr "" + +#: src/advanced-features/type-in-answer.md:7 +msgid "The text input box and the soft keyboard can be hidden by ticking **Disable typing in answer** in the preferences." +msgstr "" + +#: src/advanced-features/type-in-answer.md:9 +msgid "Even with typing disabled, the correct answer is shown on the answer side. This is done on purpose; otherwise the correct answer might not be shown at all." +msgstr "" + +#: src/advanced-features/type-in-answer.md:11 +msgid "To hide the comparison (e.g. because the correct answer is shown anyway), the HTML id **typeans** can be used. Add following to the [card styling](https://docs.ankiweb.net/templates/styling.html#card-styling) using Anki Desktop." +msgstr "" + +#: src/advanced-features/type-in-answer.md:19 +msgid "The type answer prompt and the comparison have more classes that can be used to change the way they are displayed. Some of these are the same as on Anki Desktop, some are specific to AnkiDroid." +msgstr "" + +#: src/advanced-features/type-in-answer.md:21 +msgid "The comparison uses three classes, typeGood, typeBad and typeMissed to add green, red and gray background to the typing comparison. These three classes are used on Anki desktop as well." +msgstr "" + +#: src/advanced-features/type-in-answer.md:23 +msgid "The **......** prompt has the class **typePrompt**." +msgstr "" + +#: src/advanced-features/type-in-answer.md:25 +msgid "When typing is set to off in the preferences, the class **typeOff** is added to the prompt on the question side, and to the div element containing the comparison on the answer side. This class can be used to show the type prompt or to hide the typing comparison in this case." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:3 +msgid "If Advanced Statistics are enabled, it changes the **Forecast** graph so that it shows the estimated number of reviews that will be due on a given day in the future taking into account future reviews, learning new cards and failing cards. The bars and the left axis show the number of cards due on each day if you study all cards each day, while the line and the right axis show the number of unseen (shown as **learn**), young and mature cards your deck or collection will consist of if you study all cards each day. The forecast graph does count reviews that are currently overdue. It assumes that the overdue cards will be reviewed according to the **maximum reviews/day** deck option." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:5 +msgid "Advanced Statistics can be enabled in `Settings -> Advanced -> Advanced Statistics` (in plugin section)." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:7 +msgid "The outcome of future reviewing, learning or failing cards affects reviews after that future review. To take this into account, the probability of each outcome is computed from the review log. Then the outcome is randomly chosen, such that an outcome which is more likely according to the review log is more likely to be chosen than an outcome which is less likely according to the review log. The settings all affect how the effect of the outcome of future reviews on subsequent reviews is taken into account." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:9 +msgid "Compute first n days, simulate remainder" +msgstr "" + +#: src/advanced-features/advanced-statistics.md:10 +msgid "If this setting is set to a number greater than 0, instead of randomly choosing an outcome, each possible outcome is taken into account in the simulation, together with its probability. The probability is taken into account for the graph and for future reviews in which it results, which also affect the graph. One review has a couple of possible outcomes (say 4), which all result in a review. That review also has a couple of possible outcomes and so on. If many reviews are simulated this way, many reviews (4 x 4 x 4 x ... ) have to be taken into account which increases the time it takes to compose the graph. Therefore, for reviews later than n days from now are simulated by randomly choosing an outcome." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:14 +msgid "In summary, higher n gives a more accurate graph, but it takes more time to compose the graph." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:16 +msgid "Precision of computation" +msgstr "" + +#: src/advanced-features/advanced-statistics.md:18 +msgid "Reviews which occur with a probability smaller than 100% minus the configured precision of the computation are simulated by randomly choosing an outcome rather than taking into account each possible outcome. This setting is only applicable if the first n days are computed. If Advanced Statistics are disabled, the **Forecast** graph shows the estimated number of reviews that will be due on a given day in the future if you do not review cards, learn no new cards and fail no cards." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:21 +msgid "In summary, higher precision gives a more accurate graph, but it takes more time to compose the graph." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:23 +msgid "Number of iterations of the simulation" +msgstr "" + +#: src/advanced-features/advanced-statistics.md:24 +msgid "Composes the graph several times and then displays the average of these graphs. Each time the graph is composed, another outcome might be randomly chosen. If we average many outcomes which are randomly chosen taking into account the probabilities from the review log, the average outcome will likely be close to the average of the probabilities from the review log. If we average many graphs, the average graph will likely be close to the graph which is generated by taking into account all possible outcomes. If the number of graphs which are averaged is not too high, it will be faster than taking into account all possible outcomes." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:29 +msgid "In summary, a higher number of iterations gives a more accurate graph, but it takes more time to compose the graph." +msgstr "" + +#: src/advanced-features/reminders.md:2 +msgid "AnkiDroid can remind you to devote some time to reviewing cards every day at a specific time via Android's notification framework. You can configure reminders for each options group independently. To configure a notification go to Deck options > Reminders, then tick the checkbox and select the time you want to be notified at. To stop receiving notifications go to Deck options > Reminders and unmark the checkbox." +msgstr "" + +#: src/advanced-features/reminders.md:7 +msgid "Notifications only work for top level decks. Please let us know if you want us to add notifications for subdecks too." +msgstr "" + +#: src/advanced-features/set-language-hint.md:2 +msgid "AnkiDroid has an in Automatic Language Selection feature in the Note Editor starting with AnkiDroid 2.13. This feature allows you to define a default language to be used in your keyboard for a field in a note type." +msgstr "" + +#: src/advanced-features/set-language-hint.md:5 +msgid "For example, if you have Russian and English note fields, and your keyboard supports the setImeHintLocales Android API, the keyboard layout will switch to Russian in the first field and back to English in the second automatically when the fields get focus. [Checkout video reference for demonstration](https://www.youtube.com/watch?v=JrxDjTrRhBE)" +msgstr "" + +#: src/help.md:1 +msgid "Help & Support" +msgstr "" + +#: src/help.md:3 +msgid "Before Asking" +msgstr "" + +#: src/help.md:5 +msgid "Before asking for help, please try searching through the [AnkiDroid Manual](intro.md), the list of [Frequently Asked Questions](https://github.com/ankidroid/Anki-Android/wiki/FAQ), and also the main [Anki Manual](https://docs.ankiweb.net) for general help with the Anki system and features, and any issues not limited to Android." +msgstr "" + +#: src/help.md:7 +msgid "Support" +msgstr "" + +#: src/help.md:8 +msgid "If you were unable to find what you needed in the documentation above, please visit the relevant site below:" +msgstr "" + +#: src/help.md:10 +msgid "Non-Android-Specific Issues" +msgstr "" + +#: src/help.md:11 +msgid "AnkiDroid (the Android version of Anki) is created and managed independently from other Anki versions. For the PC / Web / iOS versions, and general Anki issues that are not limited to Android, please visit the main [Anki support site](https://forums.ankiweb.net)." +msgstr "" + +#: src/help.md:13 +msgid "AnkiDroid Questions" +msgstr "" + +#: src/help.md:14 +msgid "For questions and help concerning AnkiDroid, please visit the [user forum](https://groups.google.com/g/anki-android), or you can send your questions to the forum's [public email address](mailto:public-forum@ankidroid.org) if you don't want to register on the forum." +msgstr "" + +#: src/help.md:16 +msgid "Bug Reports and Feature Requests" +msgstr "" + +#: src/help.md:17 +msgid "For bug reports and feature requests, please search through the current list of open issues on the [AnkiDroid issue tracker](https://github.com/ankidroid/Anki-Android/issues), and if there are no existing issues, create a new issue including as much information as possible. For bug reports, please also include the output of **debug info** by following the steps below: " +msgstr "" + +#: src/help.md:20 +msgid "Open the navigation drawer by tapping the button on the top left of the screen" +msgstr "" + +#: src/help.md:21 +msgid "Tap **settings**" +msgstr "" + +#: src/help.md:22 +msgid "Tap **advanced**" +msgstr "" + +#: src/help.md:23 +msgid "Tap **about AnkiDroid** at the bottom" +msgstr "" + +#: src/help.md:24 +msgid "Tap the **copy debug info** button at the bottom (which copies **debug info** to the clipboard)" +msgstr "" + +#: src/help.md:25 +msgid "If filling out the bug report on your mobile device, paste the contents of the clipboard directly to the issue. Alternatively, you can paste the contents of the clipboard into a new email, send it to yourself, then copy and paste that into the bug report from your computer." +msgstr "" + +#: src/help.md:27 +msgid "![DebugInfo.png](img/DebugInfo.png)" +msgstr "" + +#: src/help.md:29 +msgid "**Note:** if you are unable to open the app at all, so cannot even access **settings** then please follow [these instructions](https://github.com/ankidroid/Anki-Android/wiki/Unopenable-collections)." +msgstr "" + +#: src/help.md:31 +msgid "This **debug info** is important as it allows us to match your report with our internal crash report data. " +msgstr "" + +#: src/help.md:34 +msgid "AnkiDroid is an open source project, and anyone is welcome to contribute (including non-developers)! For help with contributing to AnkiDroid, please first check the [contribution wiki page](https://github.com/ankidroid/Anki-Android/wiki/Contributing), and ask any further questions in the [main forum](https://groups.google.com/g/anki-android)." +msgstr "" + +#: src/beta-testing.md:2 +msgid "If you want to try out the latest features in AnkiDroid, you can sign up for the beta testing program as follows:" +msgstr "" + +#: src/beta-testing.md:4 +msgid "Visit the [Google Play Beta page](https://play.google.com/apps/testing/com.ichi2.anki)" +msgstr "" + +#: src/beta-testing.md:5 +msgid "Click **Become a beta tester**" +msgstr "" + +#: src/beta-testing.md:7 +msgid "After following these steps, the latest beta version will automatically be installed by Google Play in the same way as ordinary updates." +msgstr "" + +#: src/beta-testing.md:9 +msgid "If you are more adventurous, you can also become an alpha tester, by joining the [alpha testers group](https://groups.google.com/g/ankidroidalphatesters) in addition to performing the above steps for beta testing." +msgstr "" + +#: src/beta-testing.md:11 +msgid "Please submit any bugs you find in these development versions to the AnkiDroid issue tracker, as per the [main help page](help.md)." +msgstr "" + +#: src/beta-testing.md:13 +msgid "If you wish to leave the testing program at any time, simply visit the [Google Play Beta page](https://play.google.com/apps/testing/com.ichi2.anki) and click **Leave the test**." +msgstr "" + +#: src/contributing.md:3 +msgid "[Get involved](#get-involved)" +msgstr "" + +#: src/contributing.md:4 +msgid "[Translate](#translate)" +msgstr "" + +#: src/contributing.md:5 +msgid "[Develop](#develop)" +msgstr "" + +#: src/contributing.md:7 +msgid "AnkiDroid is an open source project, and its development relies on contributions from volunteers. Here are some of the ways you can contribute to the AnkiDroid project:" +msgstr "" + +#: src/contributing.md:9 +msgid "Get involved" +msgstr "" + +#: src/contributing.md:10 +msgid "Rate the app, join the [AnkiDroid forum](https://groups.google.com/g/anki-android) and answer questions for other users, submit bug reports, become a [beta tester](beta-testing.md), etc. More detailed information on ways you can contribute as a non-developer can be found on the [Wiki](https://github.com/ankidroid/Anki-Android/wiki/Contributing)." +msgstr "" + +#: src/contributing.md:12 +msgid "Translate" +msgstr "" + +#: src/contributing.md:13 +msgid "Translations of AnkiDroid and this user manual are all contributed by users, and are greatly appreciated. See the " +msgstr "" + +#: src/contributing.md:14 +msgid "translating" +msgstr "" + +#: src/contributing.md:14 +msgid " wiki page for detailed instructions on how to contribute translations." +msgstr "" + +#: src/contributing.md:16 +msgid "Develop" +msgstr "" + +#: src/contributing.md:17 +msgid "The source code for AnkiDroid is available on our main [Github page](https://github.com/ankidroid/Anki-Android), and bug fixes as well as new features are very welcome. Before investing a lot of time on working on a new feature, you may like to ask on the forum first if it's likely to be merged into the main project, as not all features will be accepted. If you are just getting started with Android programming, feel free to ask on the forum for some tips and/or tasks which are suitable for beginners." +msgstr "" + +#: src/changelog/v2.15.md:1 +msgid "Version 2.15.6 (20210714)" +msgstr "" + +#: src/changelog/v2.15.md:2 +msgid "One more crash fix, no crashes shall be left unfixed! If we can help it." +msgstr "" + +#: src/changelog/v2.15.md:4 +msgid "Version 2.15.5 (20210713)" +msgstr "" + +#: src/changelog/v2.15.md:5 +msgid "[🤜🤛 Thank you! Your support makes the fixes happen!](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:6 +msgid "Full-screen navigation drawer drag is a preference, default off" +msgstr "" + +#: src/changelog/v2.15.md:7 +msgid "Floating Action Button ('+') labels are clickable again" +msgstr "" + +#: src/changelog/v2.15.md:8 +msgid "Fixed crash on first run post-install on tablets" +msgstr "" + +#: src/changelog/v2.15.md:9 +msgid "Fixed odd weekly breakdown stats chart behavior" +msgstr "" + +#: src/changelog/v2.15.md:10 +msgid "Fixed crash creating new deck from deck chooser" +msgstr "" + +#: src/changelog/v2.15.md:11 +msgid "[Updated translations](https://crowdin.com/project/ankidroid) (thank you translators!)" +msgstr "" + +#: src/changelog/v2.15.md:12 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/47?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:13 +msgid "We are deep into development for v2.16 + Google Summer of Code, lots of new stuff coming" +msgstr "" + +#: src/changelog/v2.15.md:14 +msgid "Happy reviewing!" +msgstr "" + +#: src/changelog/v2.15.md:16 +msgid "Version 2.15.4 (20210602)" +msgstr "" + +#: src/changelog/v2.15.md:17 +msgid "Saw one crash show up for 2.15.3: if you touched the 3 numbers instead of the deck name on the deck list on phones, it would crash" +msgstr "" + +#: src/changelog/v2.15.md:19 +msgid "Temporarily revert full screen navigation drawer option to fix" +msgstr "" + +#: src/changelog/v2.15.md:21 +msgid "Version 2.15.3 (20210602)" +msgstr "" + +#: src/changelog/v2.15.md:22 +msgid "[❤️ Thank you so much for the donations! We appreciate it ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:23 +msgid "Another batch of fixes stabilizing all the work done for AnkiDroid 2.15" +msgstr "" + +#: src/changelog/v2.15.md:24 +msgid "Fix \"Search All Decks\" in Card Browser not searching" +msgstr "" + +#: src/changelog/v2.15.md:25 +msgid "Make new full screen navigation drawer open optional, default off" +msgstr "" + +#: src/changelog/v2.15.md:26 +msgid "Preserve edited search in card browser if navigation drawer opens" +msgstr "" + +#: src/changelog/v2.15.md:27 +msgid "Fix crash editing Tags dialog when switching back from another app" +msgstr "" + +#: src/changelog/v2.15.md:28 +msgid "Fix incorrect cloze help link" +msgstr "" + +#: src/changelog/v2.15.md:29 +msgid "Increase touchable area of undo icon" +msgstr "" + +#: src/changelog/v2.15.md:30 +msgid "Fix legacy / handebar template parsing" +msgstr "" + +#: src/changelog/v2.15.md:31 +msgid "Fix icon sizes for notifications and search" +msgstr "" + +#: src/changelog/v2.15.md:32 +msgid "Fix audio files incorrectly importing when attached" +msgstr "" + +#: src/changelog/v2.15.md:33 +msgid "Fix deck options \"steps\" showing up with lots of decimal places" +msgstr "" + +#: src/changelog/v2.15.md:34 +msgid "Update translations, add Kannada language" +msgstr "" + +#: src/changelog/v2.15.md:35 +msgid "Fix F-Droid app store publishing" +msgstr "" + +#: src/changelog/v2.15.md:36 +msgid "Correct navigation away from and back to Changelog" +msgstr "" + +#: src/changelog/v2.15.md:37 +msgid "Fix template parsing for \"{{FrontSide}}\"" +msgstr "" + +#: src/changelog/v2.15.md:38 +msgid "Fix stats tab view layout in RTL context" +msgstr "" + +#: src/changelog/v2.15.md:39 +msgid "Fix preview of cloze cards from note editor " +msgstr "" + +#: src/changelog/v2.15.md:40 +msgid "[Full changelog here](https://github.com/ankidroid/Anki-Android/milestone/45?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:43 +msgid "Version 2.15.2 (20210526)" +msgstr "" + +#: src/changelog/v2.15.md:44 +msgid "[❤️ Your donations here give us the time to work on the app, thank you! ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:45 src/changelog/v2.15.md:58 +msgid "🔥 Hot fixes for 2.15.0 issues (See below for 2.15.0 notes 👇 it was a huge release!)" +msgstr "" + +#: src/changelog/v2.15.md:46 +msgid "2.15 should have no regressions now we think 🤞 " +msgstr "" + +#: src/changelog/v2.15.md:47 +msgid "That means we'll slow down the releases and these popups now, sorry + thank you " +msgstr "" + +#: src/changelog/v2.15.md:48 +msgid "Fix another API issue breaking card add from external apps" +msgstr "" + +#: src/changelog/v2.15.md:49 +msgid "Fix conditional template issue that caused blank cards for some" +msgstr "" + +#: src/changelog/v2.15.md:50 +msgid "Fix auto-advance ignoring \"no advance\" setting if card had audio" +msgstr "" + +#: src/changelog/v2.15.md:51 +msgid "Gracefully handle corrupt collections with invalid current decks selected" +msgstr "" + +#: src/changelog/v2.15.md:52 +msgid "Publish to Amazon App Store again (go get AnkiDroid on your Fire devices!)" +msgstr "" + +#: src/changelog/v2.15.md:53 +msgid "[Issue tracker milestone here](https://github.com/ankidroid/Anki-Android/milestone/44?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:56 +msgid "Version 2.15.1 (20210525)" +msgstr "" + +#: src/changelog/v2.15.md:57 +msgid "[❤️ Your donations funded this rapid set of fixes, enjoy! ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:59 +msgid "Do not auto-update users to scheduler v2. Yet." +msgstr "" + +#: src/changelog/v2.15.md:60 +msgid "Fix crash on undo after deck delete" +msgstr "" + +#: src/changelog/v2.15.md:61 +msgid "Try harder to successfully paste images" +msgstr "" + +#: src/changelog/v2.15.md:62 +msgid "Reviewer performance fix - only load mathjax if needed" +msgstr "" + +#: src/changelog/v2.15.md:63 +msgid "Fixed compatibility issue for 2.15 collections on 2.14" +msgstr "" + +#: src/changelog/v2.15.md:64 +msgid "Fixed API issue breaking card add from external apps" +msgstr "" + +#: src/changelog/v2.15.md:65 +msgid "Fresh language translations. See a bad translation? [You can fix it easily!](https://crowdin.com/project/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:66 +msgid "[Detailed issue log](https://github.com/ankidroid/Anki-Android/milestone/43?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:68 +msgid "Version 2.15.0 (20210524)" +msgstr "" + +#: src/changelog/v2.15.md:69 +msgid "[❤️ Your donations funded these features, enjoy! ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:70 +msgid "Thanks to [Google Summer of Code](https://github.com/ankidroid/Anki-Android/wiki/Google-Summer-of-Code-2021) students for a HUGE effort!" +msgstr "" + +#: src/changelog/v2.15.md:71 +msgid "Way too many changes to describe, but here are the highlights:" +msgstr "" + +#: src/changelog/v2.15.md:72 +msgid "New timezone code supported for sync with AnkiDesktop!" +msgstr "" + +#: src/changelog/v2.15.md:73 +msgid "Performance, stability improvements everywhere" +msgstr "" + +#: src/changelog/v2.15.md:74 +msgid "General UI improvements (accessibility, dark mode, design, more)" +msgstr "" + +#: src/changelog/v2.15.md:75 +msgid "Many new keyboard shortcuts and gesture actions" +msgstr "" + +#: src/changelog/v2.15.md:76 +msgid "Languages: Added Odia, Malayalam; big RTL support improvements!" +msgstr "" + +#: src/changelog/v2.15.md:77 +msgid "Reviewer: Javascript API: many new methods" +msgstr "" + +#: src/changelog/v2.15.md:78 +msgid "Improved account login, sync conflict, card template UI" +msgstr "" + +#: src/changelog/v2.15.md:79 +msgid "Tags and Decks dialogs have search!" +msgstr "" + +#: src/changelog/v2.15.md:80 +msgid "Whiteboard: erase, pen colors, stroke width" +msgstr "" + +#: src/changelog/v2.15.md:81 +msgid "NoteEditor: Mathjax 3, capitalize sentences setting" +msgstr "" + +#: src/changelog/v2.15.md:82 +msgid "Huge quality improvements all over codebase, helps future developers" +msgstr "" + +#: src/changelog/v2.15.md:83 +msgid "[🚧 Full 638 item changelog here! 🚧](https://github.com/ankidroid/Anki-Android/milestone/37?closed=1)" +msgstr "" + +#: src/changelog/v2.14.md:1 +msgid "Version 2.14.6 (20210309)" +msgstr "" + +#: src/changelog/v2.14.md:2 +msgid "Reviewer: fix \"my card is blank now with 2.14.5! help!\" 😱" +msgstr "" + +#: src/changelog/v2.14.md:3 +msgid "Reviewer: fix Android 8/8.1 review buttons disappear (finally?)" +msgstr "" + +#: src/changelog/v2.14.md:5 +msgid "Version 2.14.5 (20210307)" +msgstr "" + +#: src/changelog/v2.14.md:6 +msgid "We really appreciate the [donations](https://opencollective.com/ankidroid), they paid for these fixes 🤝" +msgstr "" + +#: src/changelog/v2.14.md:7 +msgid "NoteEditor: Android 11 users can crop!" +msgstr "" + +#: src/changelog/v2.14.md:8 +msgid "NoteEditor: Canceling crop twice won't delete your image" +msgstr "" + +#: src/changelog/v2.14.md:9 +msgid "DeckList: parent limits altered to match Desktop" +msgstr "" + +#: src/changelog/v2.14.md:10 +msgid "DeckList: current deck saved as correct type" +msgstr "" + +#: src/changelog/v2.14.md:11 +msgid "SchedulerV2: allow very small delays" +msgstr "" + +#: src/changelog/v2.14.md:12 +msgid "KNOWN ISSUE: [Android 8/8.1 answer buttons disappear](https://github.com/ankidroid/Anki-Android/issues/7369). Use gestures as workaround." +msgstr "" + +#: src/changelog/v2.14.md:13 +msgid "Anyone with Android 8/8.1 that reproduces this and knows how to develop Android layouts? We'd love the help!" +msgstr "" + +#: src/changelog/v2.14.md:15 +msgid "Version 2.14.4 (20210307)" +msgstr "" + +#: src/changelog/v2.14.md:16 +msgid "Re-released immediately as 2.14.5 after release script issue 🤷😅" +msgstr "" + +#: src/changelog/v2.14.md:18 +msgid "Version 2.14.3 (20210109)" +msgstr "" + +#: src/changelog/v2.14.md:19 +msgid "[The AnKing](https://www.youtube.com/c/TheAnKing) has graced us with a [new intro video](https://youtu.be/iuBU_OM9oAM)! 🤓" +msgstr "" + +#: src/changelog/v2.14.md:20 +msgid "Still happily overwhelmed by the [donations](https://opencollective.com/ankidroid) 💪" +msgstr "" + +#: src/changelog/v2.14.md:21 +msgid "Reviewer: Fix mark note keyboard shortcut" +msgstr "" + +#: src/changelog/v2.14.md:22 +msgid "NoteEditor: Fix to remove padding if removing formatting toolbar" +msgstr "" + +#: src/changelog/v2.14.md:23 +msgid "Previewer: Fix to show same card after edit" +msgstr "" + +#: src/changelog/v2.14.md:24 +msgid "Scheduler: Fix v1 scheduler completes deck when only learn cards due" +msgstr "" + +#: src/changelog/v2.14.md:26 +msgid "Version 2.14.2 (20201202)" +msgstr "" + +#: src/changelog/v2.14.md:27 +msgid "Wow! We are humbled by the [donations](https://opencollective.com/ankidroid) 🤯" +msgstr "" + +#: src/changelog/v2.14.md:28 +msgid "The resources are already going to contributors to improve the app! Thank you ❤️ " +msgstr "" + +#: src/changelog/v2.14.md:29 +msgid "Note Editor: Fix image crop not working first time" +msgstr "" + +#: src/changelog/v2.14.md:30 +msgid "Note Editor: Paste image at cursor not end" +msgstr "" + +#: src/changelog/v2.14.md:31 +msgid "Note Editor: Fix Ctrl+C opens preview" +msgstr "" + +#: src/changelog/v2.14.md:32 +msgid "Note Editor: Add menubar toggle to disable editing toolbar" +msgstr "" + +#: src/changelog/v2.14.md:33 +msgid "Home Screen: Fix Vivo device shortcut creation (again)" +msgstr "" + +#: src/changelog/v2.14.md:34 +msgid "Reviewer: Fix numeric keypad not working" +msgstr "" + +#: src/changelog/v2.14.md:35 +msgid "Note Editor: Fix cloze cards going to wrong deck" +msgstr "" + +#: src/changelog/v2.14.md:36 +msgid "Navigation Menu: Fix safe display app hang" +msgstr "" + +#: src/changelog/v2.14.md:37 +msgid "Preferences: Fix gestures menu translation / ordering issue" +msgstr "" + +#: src/changelog/v2.14.md:38 +msgid "Translations: thanks [translators!](https://crowdin.com/project/ankidroid/activity_stream) - you can help too!" +msgstr "" + +#: src/changelog/v2.14.md:39 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/39?closed=1)" +msgstr "" + +#: src/changelog/v2.14.md:41 +msgid "Version 2.14.1 (2020-11-23)" +msgstr "" + +#: src/changelog/v2.14.md:42 +msgid "Always free, always open source, but you may [donate if you like 😊](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.14.md:43 +msgid "Move sync button to right of action bar (vs search)" +msgstr "" + +#: src/changelog/v2.14.md:44 +msgid "Fix duplicate note detection" +msgstr "" + +#: src/changelog/v2.14.md:45 +msgid "Fix add deck shortcut on Vivo devices" +msgstr "" + +#: src/changelog/v2.14.md:46 +msgid "Fix non-translatable 'Card Info' strings" +msgstr "" + +#: src/changelog/v2.14.md:47 +msgid "Fix suspended card handling in filtered decks" +msgstr "" + +#: src/changelog/v2.14.md:48 +msgid "Sync translations from volunteers on our crowdin.com site (thank you!)" +msgstr "" + +#: src/changelog/v2.14.md:49 +msgid "Fix crash on mismatched WebView ABIs" +msgstr "" + +#: src/changelog/v2.14.md:50 +msgid "Fix crash invalid filename handling while pasting image" +msgstr "" + +#: src/changelog/v2.14.md:51 +msgid "Fix crash selecting cards in card browser" +msgstr "" + +#: src/changelog/v2.14.md:52 +msgid "Fix crash Android 8 in card browser" +msgstr "" + +#: src/changelog/v2.14.md:53 +msgid "Fix crash in undo labeling" +msgstr "" + +#: src/changelog/v2.14.md:54 +msgid "Fix crash reset password when system browser not exported" +msgstr "" + +#: src/changelog/v2.14.md:55 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/38?closed=1)" +msgstr "" + +#: src/changelog/v2.14.md:57 +msgid "Version 2.14.0 (2020-11-18)" +msgstr "" + +#: src/changelog/v2.14.md:58 +msgid "Enabled Donations - we ❤️ you, [now you can ❤️ us 😊](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.14.md:59 +msgid "New Screen: Card Info (from Card Browser or as a Reviewer App Bar Button)" +msgstr "" + +#: src/changelog/v2.14.md:60 +msgid "New Screen: Help - easy access to manual, many community pages/manuals, donation page, translations" +msgstr "" + +#: src/changelog/v2.14.md:61 +msgid "Home screen: Add deck shortcut" +msgstr "" + +#: src/changelog/v2.14.md:62 +msgid "Deck Options: SchedV2: Support setting \"Hard Factor\" " +msgstr "" + +#: src/changelog/v2.14.md:63 +msgid "Card Browser: Add deck filtering" +msgstr "" + +#: src/changelog/v2.14.md:64 +msgid "Card Browser: Filter By Flag" +msgstr "" + +#: src/changelog/v2.14.md:65 +msgid "Card Browser: Adding cards defaults to selected deck" +msgstr "" + +#: src/changelog/v2.14.md:66 +msgid "Card Browser: Many more keyboard shortcuts" +msgstr "" + +#: src/changelog/v2.14.md:67 +msgid "Card Browser: Display the number of cards deleted when deleting a note" +msgstr "" + +#: src/changelog/v2.14.md:68 +msgid "Card Browser: Better handling of deck searches containing wildcards" +msgstr "" + +#: src/changelog/v2.14.md:69 +msgid "Reviewer: Basic Android TV Support" +msgstr "" + +#: src/changelog/v2.14.md:70 +msgid "Reviewer: New Gesture: Abort Learning & Sync" +msgstr "" + +#: src/changelog/v2.14.md:71 +msgid "Reviewer: Support AnkiMobile 9-area gesture touch layout" +msgstr "" + +#: src/changelog/v2.14.md:72 +msgid "Reviewer: Improve \"Empty Card\" UX" +msgstr "" + +#: src/changelog/v2.14.md:73 +msgid "Reviewer: Keyboard shortcuts for flags (Ctrl+1...4)" +msgstr "" + +#: src/changelog/v2.14.md:74 +msgid "Note Editor: Editor Toolbar (& keyboard shortcuts) - hugely requested feature!" +msgstr "" + +#: src/changelog/v2.14.md:75 +msgid "Note Editor Toolbar: Apply Custom Commands (& keyboard shortcuts)" +msgstr "" + +#: src/changelog/v2.14.md:76 +msgid "Note Editor: Paste to Insert Image" +msgstr "" + +#: src/changelog/v2.14.md:77 +msgid "Note Editor: Made fields full-width" +msgstr "" + +#: src/changelog/v2.14.md:78 +msgid "Note Editor: Change Font Size for fields" +msgstr "" + +#: src/changelog/v2.14.md:79 +msgid "Note Editor: Expand/Collapse Fields" +msgstr "" + +#: src/changelog/v2.14.md:80 +msgid "Note Editor: Clear Field button" +msgstr "" + +#: src/changelog/v2.14.md:81 +msgid "Note Editor: Ctrl+Shift+Num to switch fields" +msgstr "" + +#: src/changelog/v2.14.md:82 +msgid "Note Editor: Improved image addition / naming" +msgstr "" + +#: src/changelog/v2.14.md:83 +msgid "Note Editor: Add preference to convert newline to HTML (or not)" +msgstr "" + +#: src/changelog/v2.14.md:84 +msgid "OS Integration: Default to \"Anki Card\" in system context menu vs \"Card Browser\"" +msgstr "" + +#: src/changelog/v2.14.md:85 +msgid "Libanki: Add FileUpload API" +msgstr "" + +#: src/changelog/v2.14.md:86 +msgid "Translations: Tagged screenshots on crowdin.com to help our translators" +msgstr "" + +#: src/changelog/v2.14.md:87 +msgid "Stability: Fix rare crashes (down to ~50/day total w/1.8million installs!)" +msgstr "" + +#: src/changelog/v2.14.md:88 +msgid "Performance: massive number of speedups" +msgstr "" + +#: src/changelog/v2.14.md:89 +msgid "Dev: Massively sped up AnkiDroid builds and improved code readability" +msgstr "" + +#: src/changelog/v2.14.md:90 +msgid "Totals: 345 code changes and hundreds of translations, made by volunteers, in 2 months" +msgstr "" + +#: src/changelog/v2.14.md:91 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/30?closed=1)" +msgstr "" + +#: src/changelog/v2.13.md:1 +msgid "Version 2.13.5 (2020-10-03)" +msgstr "" + +#: src/changelog/v2.13.md:2 +msgid "Fix performance for fast (\\<1s) answers in review" +msgstr "" + +#: src/changelog/v2.13.md:3 +msgid "Add links to new Arabic help/manual translation" +msgstr "" + +#: src/changelog/v2.13.md:4 +msgid "Add back button handling to changelog display" +msgstr "" + +#: src/changelog/v2.13.md:5 +msgid "Add rate button to changelog" +msgstr "" + +#: src/changelog/v2.13.md:6 +msgid "Add warning message to handle future db upgrades" +msgstr "" + +#: src/changelog/v2.13.md:7 +msgid "Sync all translations from our volunteer translators (thanks everyone!)" +msgstr "" + +#: src/changelog/v2.13.md:9 +msgid "Version 2.13.4 (2020-09-29)" +msgstr "" + +#: src/changelog/v2.13.md:10 +msgid "Fix crash showing TagsDialog" +msgstr "" + +#: src/changelog/v2.13.md:11 +msgid "Fix crash in gesture detection" +msgstr "" + +#: src/changelog/v2.13.md:12 +msgid "Improve import interrupted error message" +msgstr "" + +#: src/changelog/v2.13.md:13 +msgid "Fix scheduler counts after undo" +msgstr "" + +#: src/changelog/v2.13.md:14 +msgid "Fix Card Browser preview after sort" +msgstr "" + +#: src/changelog/v2.13.md:15 +msgid "Fix button display if answer animation incomplete" +msgstr "" + +#: src/changelog/v2.13.md:16 +msgid "Sync all translations" +msgstr "" + +#: src/changelog/v2.13.md:18 +msgid "Version 2.13.3 (2020-09-23)" +msgstr "" + +#: src/changelog/v2.13.md:19 +msgid "Fix double-clicking answer buttons skipping cards" +msgstr "" + +#: src/changelog/v2.13.md:20 +msgid "Change missing media warning to twice-per-session not twice-per-deck" +msgstr "" + +#: src/changelog/v2.13.md:21 +msgid "Change answer button fade on open" +msgstr "" + +#: src/changelog/v2.13.md:22 +msgid "Updated all translations from volunteer crowdin.com site up to 20200923" +msgstr "" + +#: src/changelog/v2.13.md:24 +msgid "Version 2.13.2 (2020-09-19)" +msgstr "" + +#: src/changelog/v2.13.md:25 +msgid "Fix Crash rare on Card Browser exit" +msgstr "" + +#: src/changelog/v2.13.md:26 +msgid "Fix Crash Android 4.4" +msgstr "" + +#: src/changelog/v2.13.md:27 +msgid "Fix Open Deck failures / improve related messaging" +msgstr "" + +#: src/changelog/v2.13.md:28 +msgid "Fix messaging for Xioami cloze workaround" +msgstr "" + +#: src/changelog/v2.13.md:29 +msgid "Move \"set field language\" after share on Note Editor context menu" +msgstr "" + +#: src/changelog/v2.13.md:31 +msgid "Version 2.13.1 (2020-09-17)" +msgstr "" + +#: src/changelog/v2.13.md:32 +msgid "Add cloze via clipboard paste workaround on MIUI/Xiaomi devices" +msgstr "" + +#: src/changelog/v2.13.md:33 +msgid "Fix Navigation drawer respects safe display / disable animations preference" +msgstr "" + +#: src/changelog/v2.13.md:34 +msgid "Fix Reviewer buttons respect safe display / disable animations preference" +msgstr "" + +#: src/changelog/v2.13.md:35 +msgid "Fix Deck Picker bottom bar opacity" +msgstr "" + +#: src/changelog/v2.13.md:36 +msgid "Fix Error message about missing content on cards" +msgstr "" + +#: src/changelog/v2.13.md:37 +msgid "Fix crash selecting deck that disappears during sync" +msgstr "" + +#: src/changelog/v2.13.md:39 +msgid "Version 2.13.0 (2020-09-15)" +msgstr "" + +#: src/changelog/v2.13.md:40 +msgid "Field tag (such as \"{{Front}}\") appearing in a note's field will be shown as-is in cards." +msgstr "" + +#: src/changelog/v2.13.md:41 +msgid "Add Sync icon badge when changes are pending sync (can be disabled in options)" +msgstr "" + +#: src/changelog/v2.13.md:42 +msgid "Add Edit Note from card Preview while in Card Browser" +msgstr "" + +#: src/changelog/v2.13.md:43 +msgid "Add \"Anki Card\" to system context menu (like \"Card Browser\") - disabled by default" +msgstr "" + +#: src/changelog/v2.13.md:44 +msgid "Add Set keyboard language for specific fields in the note editor (example: one field Japanese, other field Portuguese for input)." +msgstr "" + +#: src/changelog/v2.13.md:45 +msgid "Add Keep keyboard open after adding a note" +msgstr "" + +#: src/changelog/v2.13.md:46 +msgid "Add Card properties available in JavaScript API" +msgstr "" + +#: src/changelog/v2.13.md:47 +msgid "Add JavaScript API versioning for scripts (basis for future plugins)" +msgstr "" + +#: src/changelog/v2.13.md:48 +msgid "Add Auto-Login when selecting saved user account" +msgstr "" + +#: src/changelog/v2.13.md:49 +msgid "Add Allow import of collection.anki21 files when under SchedV1" +msgstr "" + +#: src/changelog/v2.13.md:50 +msgid "Add New screen for first-time users" +msgstr "" + +#: src/changelog/v2.13.md:51 +msgid "Add Button animations when answering cards" +msgstr "" + +#: src/changelog/v2.13.md:52 +msgid "Add Note Editor: Add shortcuts Ctrl+(Alt)+Shift+C to add a cloze." +msgstr "" + +#: src/changelog/v2.13.md:53 +msgid "Fix Some cards in learning were not shown at the right time (Only if you undo/bury/suspend/reset/reschedule and the next card goes to learning mode)" +msgstr "" + +#: src/changelog/v2.13.md:54 +msgid "Fix Selected deck has translucent background if a deck picker background is set" +msgstr "" + +#: src/changelog/v2.13.md:55 +msgid "Fix Improved preview screens" +msgstr "" + +#: src/changelog/v2.13.md:56 +msgid "Fix Better accessibility in Deck Browser for partially sighted users" +msgstr "" + +#: src/changelog/v2.13.md:57 +msgid "Fix Improve visibility of \"Add/Remove Option Group\"" +msgstr "" + +#: src/changelog/v2.13.md:58 +msgid "Fix Improved messages for sync rate limiting error" +msgstr "" + +#: src/changelog/v2.13.md:59 +msgid "Fix Improved messages for reducing study limits" +msgstr "" + +#: src/changelog/v2.13.md:60 +msgid "Fix Improved messaging when collection is missing media" +msgstr "" + +#: src/changelog/v2.13.md:61 +msgid "Fix Improve feedback when accessing Debug Info" +msgstr "" + +#: src/changelog/v2.13.md:62 +msgid "Fix Add additional warnings to reschedule dialog" +msgstr "" + +#: src/changelog/v2.13.md:63 +msgid "Fix Whiteboard pen color can be disabled by pressing icon again" +msgstr "" + +#: src/changelog/v2.13.md:64 +msgid "Fix Ensure all menu items in the reviewer can be customized by \"App Bar Buttons\" setting" +msgstr "" + +#: src/changelog/v2.13.md:65 +msgid "Fix Scheduler discrepancy handling early interval on filtered decks" +msgstr "" + +#: src/changelog/v2.13.md:66 +msgid "Fix Exports work when cards are missing media" +msgstr "" + +#: src/changelog/v2.13.md:67 +msgid "Fix Crash due to logging." +msgstr "" + +#: src/changelog/v2.13.md:68 +msgid "Fix Toasts used to show one more card than the number of card actually reviewed during the time box" +msgstr "" + +#: src/changelog/v2.13.md:69 +msgid "Fix Handle newlines properly in Note Editor Preview" +msgstr "" + +#: src/changelog/v2.13.md:70 +msgid "Fix Improve AnkiDroid opening animation" +msgstr "" + +#: src/changelog/v2.13.md:71 +msgid "Fix Show correct answer button when answering via Keyboard" +msgstr "" + +#: src/changelog/v2.13.md:72 +msgid "Fix \"New Cards Added\" Statistic" +msgstr "" + +#: src/changelog/v2.13.md:73 +msgid "Fix Crash when inserting a cloze when selecting text from right-to-left via keyboard" +msgstr "" + +#: src/changelog/v2.13.md:74 +msgid "Fix \"Show Password\" icon revealing saved password" +msgstr "" + +#: src/changelog/v2.13.md:75 +msgid "Fix Card browser still contains card after the app goes into background" +msgstr "" + +#: src/changelog/v2.13.md:76 +msgid "Fix Daily unbury occurs during sync if necessary" +msgstr "" + +#: src/changelog/v2.13.md:77 +msgid "Fix On big screen, buttons moved during loading" +msgstr "" + +#: src/changelog/v2.13.md:78 +msgid "Translators If some text change because of minor changes (typos) you won't have to translate it again" +msgstr "" + +#: src/changelog/v2.13.md:79 +msgid "Performance improvements (specifically: initial loading of large collection (lot of decks, note type, card type, fields, long templates...), card browser, deck picker startup, next card view, undo, cancelling tasks such as computing a list of card in browser)" +msgstr "" + +#: src/changelog/v2.13.md:80 +msgid "Dev: Massive dev workflow improvements and automated checks for our translations." +msgstr "" + +#: src/changelog/v2.13.md:81 +msgid "Dev: Implement backend for CSV Importer" +msgstr "" + +#: src/changelog/v2.13.md:82 +msgid "Dev: Improve crash reporting on app startup" +msgstr "" + +#: src/changelog/v2.13.md:83 +msgid "Dev: Massive improvement in testing, especially around scheduler / card queue behavior" +msgstr "" + +#: src/changelog/v2.13.md:84 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/27?closed=1)" +msgstr "" + +#: src/changelog/v2.12.md:1 +msgid "Version 2.12.1 (2020-07-21)" +msgstr "" + +#: src/changelog/v2.12.md:2 +msgid "Fix bug previewing edited notes after changing field count" +msgstr "" + +#: src/changelog/v2.12.md:3 +msgid "Fix crash previewing edited notes from dynamic decks" +msgstr "" + +#: src/changelog/v2.12.md:4 +msgid "Fix crash restarting app after a crash" +msgstr "" + +#: src/changelog/v2.12.md:5 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/28?closed=1)" +msgstr "" + +#: src/changelog/v2.12.md:7 +msgid "Version 2.12.0 (2020-07-18)" +msgstr "" + +#: src/changelog/v2.12.md:8 +msgid "Add Crop image feature" +msgstr "" + +#: src/changelog/v2.12.md:9 +msgid "Add Preview in note editor" +msgstr "" + +#: src/changelog/v2.12.md:10 +msgid "Add edit tags in reviewer" +msgstr "" + +#: src/changelog/v2.12.md:11 +msgid "Add volume buttons as gestures" +msgstr "" + +#: src/changelog/v2.12.md:12 +msgid "Add whiteboard pen color" +msgstr "" + +#: src/changelog/v2.12.md:13 +msgid "Add microphone tool bar in reviewer" +msgstr "" + +#: src/changelog/v2.12.md:14 +msgid "Add javascript API (check the Wiki!)" +msgstr "" + +#: src/changelog/v2.12.md:15 +msgid "Improve: app is 3MB smaller" +msgstr "" + +#: src/changelog/v2.12.md:16 +msgid "Fix: show whole tag in tags dialog" +msgstr "" + +#: src/changelog/v2.12.md:17 +msgid "Fix copy note copies tags too" +msgstr "" + +#: src/changelog/v2.12.md:18 +msgid "Fix data corruption canceling template edits" +msgstr "" + +#: src/changelog/v2.12.md:19 +msgid "performance and bug fixes everywhere!" +msgstr "" + +#: src/changelog/v2.12.md:21 +msgid "11 volunteers made hundreds of individual changes this release" +msgstr "" + +#: src/changelog/v2.12.md:23 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/18?closed=1)" +msgstr "" + +#: src/changelog/v2.11.md:1 +msgid "Version 2.11.3 (2020-06-17)" +msgstr "" + +#: src/changelog/v2.11.md:2 +msgid "Fix out-of-memory errors when importing very large decks" +msgstr "" + +#: src/changelog/v2.11.md:3 +msgid "Fix incorrect out-of-space message on import in Android 4" +msgstr "" + +#: src/changelog/v2.11.md:4 +msgid "Fix crash if card viewer closed quickly after view" +msgstr "" + +#: src/changelog/v2.11.md:5 +msgid "Fix unzip fail on .apkg files >2GB" +msgstr "" + +#: src/changelog/v2.11.md:6 +msgid "Fix crash on edit note in browser multi-select" +msgstr "" + +#: src/changelog/v2.11.md:8 +msgid "Version 2.11.2 (2020-06-10)" +msgstr "" + +#: src/changelog/v2.11.md:9 +msgid "Add santali language" +msgstr "" + +#: src/changelog/v2.11.md:10 +msgid "Fix Hebrew, Indonesian, Tagalog languages" +msgstr "" + +#: src/changelog/v2.11.md:11 +msgid "Improve error reporting around apkg import failures" +msgstr "" + +#: src/changelog/v2.11.md:12 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/24?closed=1)" +msgstr "" + +#: src/changelog/v2.11.md:14 +msgid "Version 2.11.1 (2020-06-08)" +msgstr "" + +#: src/changelog/v2.11.md:15 +msgid "Fix crash in Card Browser multi-select mode" +msgstr "" + +#: src/changelog/v2.11.md:16 +msgid "Fix Custom Steps interval dialog space entry issue" +msgstr "" + +#: src/changelog/v2.11.md:17 +msgid "Fix flags don't export with deck" +msgstr "" + +#: src/changelog/v2.11.md:18 +msgid "Fix AnkiDroid API doesn't handle null model id (Anki Compatibility workaround)" +msgstr "" + +#: src/changelog/v2.11.md:19 +msgid "Fix translation crash in sync dialog in Azerbaijani" +msgstr "" + +#: src/changelog/v2.11.md:20 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/23?closed=1)" +msgstr "" + +#: src/changelog/v2.11.md:22 +msgid "Version 2.11.0 (2020-06-05)" +msgstr "" + +#: src/changelog/v2.11.md:23 +msgid "Android minimum supported version is now 4.1 / Jelly Bean / API16 (AnkiWeb Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:24 +msgid "Change sibling burying should default to off (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:25 +msgid "Change learn cards do not go in filtered decks in v1 sched (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:26 +msgid "Add Browser Appearance screen, to edit Card Browser render format (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:27 +msgid "Add guidance in Note Editor if no cards will be generated despite full fields" +msgstr "" + +#: src/changelog/v2.11.md:28 +msgid "Add all translations from our crowdin.com translation site" +msgstr "" + +#: src/changelog/v2.11.md:29 +msgid "Add ability to decrease daily limit in custom study (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:30 +msgid "Add ability to block gesture handling when tapping hints in Reviewer" +msgstr "" + +#: src/changelog/v2.11.md:31 +msgid "Add create subdeck option in deck list long-press context menu" +msgstr "" + +#: src/changelog/v2.11.md:32 +msgid "Add edit note action in Card Browser multi-select mode" +msgstr "" + +#: src/changelog/v2.11.md:33 +msgid "Add ability to turn off 'Card Browser' system text context menu item" +msgstr "" + +#: src/changelog/v2.11.md:34 +msgid "Add nightMode CSS selector for card HTML (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:35 +msgid "Add ability to change just the case of a deck name" +msgstr "" + +#: src/changelog/v2.11.md:36 +msgid "Add page-up/page-down gestures" +msgstr "" + +#: src/changelog/v2.11.md:37 +msgid "Improve gesture handling in full-screen / immersive mode" +msgstr "" + +#: src/changelog/v2.11.md:38 +msgid "Improve handling of cloze deletion in TTS mode" +msgstr "" + +#: src/changelog/v2.11.md:39 +msgid "Improve Card Browser search from Android text selection menu" +msgstr "" + +#: src/changelog/v2.11.md:40 +msgid "Improve Card Browser with default hide of media filenames" +msgstr "" + +#: src/changelog/v2.11.md:41 +msgid "Improve Reviewer auto-advance by waiting for TTS to finish" +msgstr "" + +#: src/changelog/v2.11.md:42 +msgid "Improve transparent SVG display in night mode with white background" +msgstr "" + +#: src/changelog/v2.11.md:43 +msgid "Improve anki package import handling" +msgstr "" + +#: src/changelog/v2.11.md:44 +msgid "Improve AnkiWeb login form enter button handling" +msgstr "" + +#: src/changelog/v2.11.md:45 +msgid "Improve hardware back button handling in restore from backup" +msgstr "" + +#: src/changelog/v2.11.md:46 +msgid "Improve Reviewer display of un-rendered LaTeX" +msgstr "" + +#: src/changelog/v2.11.md:47 +msgid "Improve TTS / auto-answer combination, wait for TTS before advance" +msgstr "" + +#: src/changelog/v2.11.md:48 +msgid "Workaround Firefox open downloaded deck bug" +msgstr "" + +#: src/changelog/v2.11.md:49 +msgid "Workaround crash on Samsung devices with >500 deck reminders" +msgstr "" + +#: src/changelog/v2.11.md:50 +msgid "Fix card template editor mistakenly allowing add template on cloze type" +msgstr "" + +#: src/changelog/v2.11.md:51 +msgid "Fix language change preference" +msgstr "" + +#: src/changelog/v2.11.md:52 +msgid "Fix ability to unbury a deck in deck list" +msgstr "" + +#: src/changelog/v2.11.md:53 +msgid "Fix app bar item flicker during review" +msgstr "" + +#: src/changelog/v2.11.md:54 +msgid "Fix V2 scheduler learning card count after undo" +msgstr "" + +#: src/changelog/v2.11.md:55 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/13?closed=1)" +msgstr "" + +#: src/changelog/v2.10.md:1 +msgid "Version 2.10.4 (2020-05-31)" +msgstr "" + +#: src/changelog/v2.10.md:2 +msgid "Workaround expired AnkiWeb SSL Root certificate" +msgstr "" + +#: src/changelog/v2.10.md:3 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/22?closed=1)" +msgstr "" + +#: src/changelog/v2.10.md:5 +msgid "Version 2.10.3 (2020-05-29)" +msgstr "" + +#: src/changelog/v2.10.md:6 +msgid "Fix crash on no permissions on Card Browser system text menu entry" +msgstr "" + +#: src/changelog/v2.10.md:7 +msgid "Fix crash in widget if external storage unmounts" +msgstr "" + +#: src/changelog/v2.10.md:8 +msgid "Fix crash on device reboot if no permissions" +msgstr "" + +#: src/changelog/v2.10.md:9 +msgid "Fix crash if deck picker background image too large" +msgstr "" + +#: src/changelog/v2.10.md:10 +msgid "Fix crash in tags dialog" +msgstr "" + +#: src/changelog/v2.10.md:11 +msgid "Fix bad data generated for null objects (Anki compatibility)" +msgstr "" + +#: src/changelog/v2.10.md:12 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/21?closed=1)" +msgstr "" + +#: src/changelog/v2.10.md:14 +msgid "Version 2.10.2 (2020-05-14)" +msgstr "" + +#: src/changelog/v2.10.md:15 +msgid "Fix type answer cards not rendering correctly" +msgstr "" + +#: src/changelog/v2.10.md:16 +msgid "Fix type answer card template creation on non-English new installs" +msgstr "" + +#: src/changelog/v2.10.md:17 +msgid "Fix frequent full sync caused by incorrect learning card counts" +msgstr "" + +#: src/changelog/v2.10.md:18 +msgid "Fix crash importing into fresh install with no storage permission" +msgstr "" + +#: src/changelog/v2.10.md:20 +msgid "Version 2.10.1 (2020-05-13)" +msgstr "" + +#: src/changelog/v2.10.md:21 +msgid "Updated all translations from crowdin translators" +msgstr "" + +#: src/changelog/v2.10.md:22 +msgid "Fix crash note editor on rapid back button" +msgstr "" + +#: src/changelog/v2.10.md:23 +msgid "Fix crash from incorrect Thai translation" +msgstr "" + +#: src/changelog/v2.10.md:25 +msgid "Version 2.10 (2020-05-12)" +msgstr "" + +#: src/changelog/v2.10.md:26 +msgid "Add welcome dialog explaining need for storage permission" +msgstr "" + +#: src/changelog/v2.10.md:27 +msgid "Add support for Flags on cards (including flagging by gesture)" +msgstr "" + +#: src/changelog/v2.10.md:28 +msgid "Add ability to set background image in Deck Picker" +msgstr "" + +#: src/changelog/v2.10.md:29 +msgid "Add localization of standard templates created in fresh install" +msgstr "" + +#: src/changelog/v2.10.md:30 +msgid "Add support for card javascript to reload current card programmatically" +msgstr "" + +#: src/changelog/v2.10.md:31 +msgid "Add support for restricted learning / classroom devices" +msgstr "" + +#: src/changelog/v2.10.md:32 +msgid "Add preference to disable \"Extended Text UI\" full-screen editor" +msgstr "" + +#: src/changelog/v2.10.md:33 +msgid "Add CSS style capability to heavy checkmark and down arrow in card" +msgstr "" + +#: src/changelog/v2.10.md:34 +msgid "Add display of current interval on reschedule dialog" +msgstr "" + +#: src/changelog/v2.10.md:35 +msgid "Add support for card javascript to answer cards programmatically" +msgstr "" + +#: src/changelog/v2.10.md:36 +msgid "Add ability to toggle sticky field in field editor" +msgstr "" + +#: src/changelog/v2.10.md:37 +msgid "Improve deck list newline, style, script tag handling in deck descriptions" +msgstr "" + +#: src/changelog/v2.10.md:38 +msgid "Improve whiteboard on/off state handling, especially between day/night mode" +msgstr "" + +#: src/changelog/v2.10.md:39 +msgid "Improve multi-selection options in CardBrowser" +msgstr "" + +#: src/changelog/v2.10.md:40 +msgid "Improve performance (systematic optimization process, lots of improvements!)" +msgstr "" + +#: src/changelog/v2.10.md:41 +msgid "Improve handling of erroneous notes (missing fields, improper clozes)" +msgstr "" + +#: src/changelog/v2.10.md:42 +msgid "Improve user messaging on network connection failures" +msgstr "" + +#: src/changelog/v2.10.md:43 +msgid "Improve counting of suspended/buried cards in advanced statistics" +msgstr "" + +#: src/changelog/v2.10.md:44 +msgid "Improve v2 scheduler compatibility with Anki ecosystem" +msgstr "" + +#: src/changelog/v2.10.md:45 +msgid "Improve handling / detection of full sync need" +msgstr "" + +#: src/changelog/v2.10.md:46 +msgid "Improve Anki compatibility by allowing more field/model/deck name characters" +msgstr "" + +#: src/changelog/v2.10.md:47 +msgid "Improve deck list estimated review times with human scale times" +msgstr "" + +#: src/changelog/v2.10.md:48 +msgid "Fix text scaling bug in card browser" +msgstr "" + +#: src/changelog/v2.10.md:49 +msgid "Fix crash in export while using v2 scheduler" +msgstr "" + +#: src/changelog/v2.10.md:50 +msgid "Fix Custom Tabs crash with non-default system web browser" +msgstr "" + +#: src/changelog/v2.10.md:51 +msgid "Fix issues with import of packages with long Unicode names" +msgstr "" + +#: src/changelog/v2.10.md:52 +msgid "Fix incorrect intervals on lapsed filtered v2 scheduler cards" +msgstr "" + +#: src/changelog/v2.10.md:53 +msgid "Fix multimedia editor save/cancel behavior" +msgstr "" + +#: src/changelog/v2.10.md:54 +msgid "Fix incorrect button/gesture availability while existing task is still active" +msgstr "" + +#: src/changelog/v2.10.md:55 +msgid "Fix type answer crash on invalid characters" +msgstr "" + +#: src/changelog/v2.10.md:56 +msgid "Fix cloze references not being recognized in all fields" +msgstr "" + +#: src/changelog/v2.10.md:57 +msgid "Fix invalid ability to change deck to a filtered deck" +msgstr "" + +#: src/changelog/v2.10.md:58 +msgid "Fix crashes on adding invalid images, audios, and videos" +msgstr "" + +#: src/changelog/v2.10.md:59 +msgid "Fix CardBrowser crash after deleting card" +msgstr "" + +#: src/changelog/v2.10.md:60 +msgid "Fix crash and help user if no browser detected" +msgstr "" + +#: src/changelog/v2.10.md:61 +msgid "Fix Reviewer crash if card not available" +msgstr "" + +#: src/changelog/v2.10.md:62 +msgid "Fix crash / improve import of pasted decks" +msgstr "" + +#: src/changelog/v2.10.md:63 +msgid "Fix clicking hint field blocks key input in Reviewer" +msgstr "" + +#: src/changelog/v2.10.md:64 +msgid "Fix Previewer forgetting which card to show on device rotation" +msgstr "" + +#: src/changelog/v2.10.md:65 +msgid "Fix Mathjax/cloze interactions" +msgstr "" + +#: src/changelog/v2.10.md:66 +msgid "Fix vertical alignment of touch area in full-screen review" +msgstr "" + +#: src/changelog/v2.10.md:67 +msgid "Fix handling of ':::' in deck names" +msgstr "" + +#: src/changelog/v2.10.md:68 +msgid "Fix incorrect display of HTML comments in card browser" +msgstr "" + +#: src/changelog/v2.9.md:1 +msgid "Version 2.9.7 (2020-04-30)" +msgstr "" + +#: src/changelog/v2.9.md:2 +msgid "Fix crash / workaround deck options timer config regression in AnkiDesktop" +msgstr "" + +#: src/changelog/v2.9.md:4 +msgid "Version 2.9.6 (2020-04-03)" +msgstr "" + +#: src/changelog/v2.9.md:5 +msgid "Fix multimedia crashes (permissions handling, image add, preview)" +msgstr "" + +#: src/changelog/v2.9.md:6 +msgid "Fix UI and crashes in database check (user dialog + exception handling)" +msgstr "" + +#: src/changelog/v2.9.md:7 +msgid "Fix Windows 10 image compatibility issue with image paths" +msgstr "" + +#: src/changelog/v2.9.md:8 +msgid "Fix AnkiDesktop sync compatibility issue if more than 1000 cards due" +msgstr "" + +#: src/changelog/v2.9.md:9 +msgid "Fix crash in card browser render" +msgstr "" + +#: src/changelog/v2.9.md:10 +msgid "Fix parsing of image tags in card browser" +msgstr "" + +#: src/changelog/v2.9.md:11 +msgid "Fix crash in StudyOptionsFragment" +msgstr "" + +#: src/changelog/v2.9.md:12 +msgid "Fix issue with deck options group changing on export" +msgstr "" + +#: src/changelog/v2.9.md:13 +msgid "Fix issue with exports containing unexpected media" +msgstr "" + +#: src/changelog/v2.9.md:14 +msgid "Fix issue with dynamic decks (crash fix, export fix)" +msgstr "" + +#: src/changelog/v2.9.md:15 +msgid "Fix high frequency issue \"AnkiDroid directory is inaccessible\"" +msgstr "" + +#: src/changelog/v2.9.md:16 +msgid "Fix high frequency WebView (card viewer) crash" +msgstr "" + +#: src/changelog/v2.9.md:17 +msgid "Add columns to card browser (due, ease, changed, created, edited)" +msgstr "" + +#: src/changelog/v2.9.md:18 +msgid "Fix card scheduler not respecting maximum intervals" +msgstr "" + +#: src/changelog/v2.9.md:19 +msgid "Fix card browser spins forever on images or empty strings" +msgstr "" + +#: src/changelog/v2.9.md:21 +msgid "Version 2.9.5 (2020-03-15)" +msgstr "" + +#: src/changelog/v2.9.md:22 +msgid "Fix crash rendering card list while updating card browser search" +msgstr "" + +#: src/changelog/v2.9.md:23 +msgid "Fix case-sensitivity issue with pronunciation words not being found" +msgstr "" + +#: src/changelog/v2.9.md:24 +msgid "Fix crash caused by auto-sync on startup showing dialog too soon" +msgstr "" + +#: src/changelog/v2.9.md:25 +msgid "Fix crash on preview of TTS cards showing language selectiond dialog too slowly" +msgstr "" + +#: src/changelog/v2.9.md:26 +msgid "Fix crash on import if collection not found" +msgstr "" + +#: src/changelog/v2.9.md:27 +msgid "Fix Anki ecosystem deck configuration issue for Anki Desktop users \\<= 2.16" +msgstr "" + +#: src/changelog/v2.9.md:28 +msgid "Fix crash if user attempts to open camera or gallery and no app is available" +msgstr "" + +#: src/changelog/v2.9.md:29 +msgid "Fix crash building deck reminders while deck is synchronizing" +msgstr "" + +#: src/changelog/v2.9.md:30 +msgid "Fix crash related to audio recording stop" +msgstr "" + +#: src/changelog/v2.9.md:31 +msgid "Show helpful messages if import fails because device is out of space" +msgstr "" + +#: src/changelog/v2.9.md:32 +msgid "Fix crash when taking pictures on devices with Lollipop and older" +msgstr "" + +#: src/changelog/v2.9.md:34 +msgid "Version 2.9.4 (2020-02-18)" +msgstr "" + +#: src/changelog/v2.9.md:35 +msgid "Fix crash when fetching pronunciations in note editor" +msgstr "" + +#: src/changelog/v2.9.md:36 +msgid "Fix issue with pronunciation words not being found" +msgstr "" + +#: src/changelog/v2.9.md:37 +msgid "Fix crash on startup for users with auto-sync on startup" +msgstr "" + +#: src/changelog/v2.9.md:38 +msgid "Fix crash on deck import when app is in background" +msgstr "" + +#: src/changelog/v2.9.md:39 +msgid "Fix crash for users of Google Chrome Canary" +msgstr "" + +#: src/changelog/v2.9.md:40 +msgid "Fix crash when adding certain audio clips" +msgstr "" + +#: src/changelog/v2.9.md:41 +msgid "Fix crash related to fetching Sound metadata" +msgstr "" + +#: src/changelog/v2.9.md:42 +msgid "Fix issue where audio plays twice" +msgstr "" + +#: src/changelog/v2.9.md:44 +msgid "Version 2.9.3 (2020-02-09)" +msgstr "" + +#: src/changelog/v2.9.md:45 +msgid "Fix issues with connection timeouts and new encryption library" +msgstr "" + +#: src/changelog/v2.9.md:46 +msgid "Fix incorrect handling of decks with ':::' in their name" +msgstr "" + +#: src/changelog/v2.9.md:48 +msgid "Version 2.9.2 (2020-02-03)" +msgstr "" + +#: src/changelog/v2.9.md:49 +msgid "Add support for new AnkiWeb encryption changes" +msgstr "" + +#: src/changelog/v2.9.md:50 +msgid "Fix some bugs using filtered decks" +msgstr "" + +#: src/changelog/v2.9.md:51 +msgid "Fix crash on app startup with uninitialized collection" +msgstr "" + +#: src/changelog/v2.9.md:52 +msgid "Fix some issues with new cloze deletion menu" +msgstr "" + +#: src/changelog/v2.9.md:53 +msgid "Fix issue with Mathjax + cloze deletion" +msgstr "" + +#: src/changelog/v2.9.md:54 +msgid "Fix incorrect intervals bug with new scheduler" +msgstr "" + +#: src/changelog/v2.9.md:55 +msgid "Add various patches from Anki Desktop" +msgstr "" + +#: src/changelog/v2.9.md:57 +msgid "Version 2.9.1 (2019-10-16)" +msgstr "" + +#: src/changelog/v2.9.md:58 +msgid "Fix crash reviewing on Android 5 - 7" +msgstr "" + +#: src/changelog/v2.9.md:59 +msgid "Fix crash on Hungarian translation" +msgstr "" + +#: src/changelog/v2.9.md:61 +msgid "Version 2.9 (2019-10-14)" +msgstr "" + +#: src/changelog/v2.9.md:62 +msgid "Change to new adaptive icon" +msgstr "" + +#: src/changelog/v2.9.md:63 +msgid "Add multi-select in the card browser (delete, change deck, reschedule)" +msgstr "" + +#: src/changelog/v2.9.md:64 +msgid "Add support for new Anki 2.1 scheduler" +msgstr "" + +#: src/changelog/v2.9.md:65 +msgid "Add support for Mathjax" +msgstr "" + +#: src/changelog/v2.9.md:66 +msgid "Add ability to add local audio files to notes" +msgstr "" + +#: src/changelog/v2.9.md:67 +msgid "Add ability to specify filename and folder on export and import" +msgstr "" + +#: src/changelog/v2.9.md:68 +msgid "Add ability to insert cloze in Note Editor" +msgstr "" + +#: src/changelog/v2.9.md:69 +msgid "Add ability to reposition cards " +msgstr "" + +#: src/changelog/v2.9.md:70 +msgid "Add ability to use due reminders for specific decks" +msgstr "" + +#: src/changelog/v2.9.md:71 +msgid "Add support for gamepad input when reviewing" +msgstr "" + +#: src/changelog/v2.9.md:72 +msgid "Add support for common keyboard shortcuts from Anki Desktop" +msgstr "" + +#: src/changelog/v2.9.md:73 +msgid "Add ability to search in Card Browser for text from system context menu" +msgstr "" + +#: src/changelog/v2.9.md:74 +msgid "Add ability to recognize tts HTML elements in questions and answers" +msgstr "" + +#: src/changelog/v2.9.md:75 +msgid "Add ability to display LaTeX rendered to SVG (vs PNG) from Anki Desktop" +msgstr "" + +#: src/changelog/v2.9.md:76 +msgid "Add confirmation check for full sync trigger in preferences" +msgstr "" + +#: src/changelog/v2.9.md:77 +msgid "Fix excessive pull-to-sync false positives. Disable when not at top of page." +msgstr "" + +#: src/changelog/v2.9.md:78 +msgid "Fix some issues with focus in Note Editor" +msgstr "" + +#: src/changelog/v2.9.md:79 +msgid "Fix media sync errors related to file creation issues" +msgstr "" + +#: src/changelog/v2.9.md:80 +msgid "Fix crash related to use of camera without permission or no camera hardware " +msgstr "" + +#: src/changelog/v2.9.md:81 +msgid "Fix crash related to Card Browser allowing preview with no cards selected" +msgstr "" + +#: src/changelog/v2.9.md:82 +msgid "Fix crash in Reviewer when collection inaccessible" +msgstr "" + +#: src/changelog/v2.9.md:83 +msgid "Fix crash related to TTS when TTS not initialized" +msgstr "" + +#: src/changelog/v2.9.md:84 +msgid "Fix crash related to sdcard mount/unmount on inaccessible collection" +msgstr "" + +#: src/changelog/v2.9.md:85 +msgid "Fix crash related to audio button being visible after loading pronunciation media" +msgstr "" + +#: src/changelog/v2.9.md:86 +msgid "Fix crash when attempting to import invalid zip files " +msgstr "" + +#: src/changelog/v2.9.md:87 +msgid "Fix crash related to switching from split-window mode to single-window mode" +msgstr "" + +#: src/changelog/v2.9.md:88 +msgid "Fix crash related to missing preferences in Preference editor" +msgstr "" + +#: src/changelog/v2.9.md:89 +msgid "Fix crash on deck selection after deleting a deck and immediately closing app" +msgstr "" + +#: src/changelog/v2.9.md:90 +msgid "Fix crash in Reviewer when non-standard browser installed" +msgstr "" + +#: src/changelog/v2.9.md:91 +msgid "Fix type-answer field showing unexpectedly after undo in Reviewer" +msgstr "" + +#: src/changelog/v2.9.md:92 +msgid "Fix incorrect display of some characters when using type-answer" +msgstr "" + +#: src/changelog/v2.9.md:93 +msgid "Fix error related to media in subfolders not showing in Reviewer" +msgstr "" + +#: src/changelog/v2.9.md:94 +msgid "Fix some issues with generated flashcard html and CSS selectors" +msgstr "" + +#: src/changelog/v2.9.md:95 +msgid "Fix some Glosbe and Beolingus regressions" +msgstr "" + +#: src/changelog/v2.9.md:96 +msgid "Fix issue where new deck was created when note type was renamed" +msgstr "" + +#: src/changelog/v2.9.md:97 +msgid "Fix add note button disappearing from Card Browser when returning from search" +msgstr "" + +#: src/changelog/v2.9.md:98 +msgid "Fix some statistics display issues " +msgstr "" + +#: src/changelog/v2.9.md:99 +msgid "Fix incorrect display of some preferences" +msgstr "" + +#: src/changelog/v2.9.md:100 +msgid "Fix invisible notification bar in NoteEditor" +msgstr "" + +#: src/changelog/v2.9.md:101 +msgid "Fix newline characters not working in cloze deletions" +msgstr "" + +#: src/changelog/v2.9.md:102 +msgid "Increase max card count display from 1000 to 99999" +msgstr "" + +#: src/changelog/v2.9.md:103 +msgid "Improve display handling of very long review intervals (> 68 years)" +msgstr "" + +#: src/changelog/v2.9.md:104 +msgid "Improve next/back buttons when using Previewer on multiple cards" +msgstr "" + +#: src/changelog/v2.9.md:105 +msgid "Improve handling of selected deck between statistics, card browser and deck picker" +msgstr "" + +#: src/changelog/v2.9.md:106 +msgid "Improve Card Browser search by restoring when returning from other activities" +msgstr "" + +#: src/changelog/v2.9.md:107 +msgid "Improve card focus handling when moving between Note Editor and Card Template Editor" +msgstr "" + +#: src/changelog/v2.9.md:108 +msgid "Improve labeling of deck-group vs deck-specific options" +msgstr "" + +#: src/changelog/v2.9.md:109 +msgid "Improve formatting of HTTP error codes during sync" +msgstr "" + +#: src/changelog/v2.9.md:110 +msgid "Improve handling of multi-touch events while whiteboard displayed" +msgstr "" + +#: src/changelog/v2.9.md:111 +msgid "Improve permission dialog descriptions" +msgstr "" + +#: src/changelog/v2.9.md:112 +msgid "Improve handling of \"preview new cards\" setting when creating custom study deck" +msgstr "" + +#: src/changelog/v2.9.md:113 +msgid "Improve Navigation Drawer performance on older devices" +msgstr "" + +#: src/changelog/v2.9.md:114 +msgid "Improve database check dialog with addition progress updates during check" +msgstr "" + +#: src/changelog/v2.9.md:115 +msgid "Use different notification channels for study reminders and general notifications" +msgstr "" + +#: src/changelog/v2.9.md:116 +msgid "Drop support for Android \\< Ice Cream Sandwich MR1 (API15, Android 4.0.3)" +msgstr "" + +#: src/changelog/v2.9.md:117 +msgid "Add support for more features on Chromebook (import, export, restore backup, camera)" +msgstr "" + +#: src/changelog/v2.9.md:118 +msgid "Add API support for card/note bury and suspend" +msgstr "" + +#: src/changelog/v2.9.md:119 +msgid "Add API to open Reviewer on specific decks from other apps" +msgstr "" + +#: src/changelog/v2.9.md:120 +msgid "Add support for HTML/Javascript debugging" +msgstr "" + +#: src/changelog/v2.9.md:121 +msgid "Add link to third party apps which support AnkiDroid API in advanced preferences" +msgstr "" + +#: src/changelog/v2.9.md:122 +msgid "Fix issue with custom sync server certificates" +msgstr "" + +#: src/changelog/v2.9.md:123 +msgid "Perform basic DB integrity check on app upgrade" +msgstr "" + +#: src/changelog/v2.9.md:124 +msgid "Introduce optional analytics reporting" +msgstr "" + +#: src/changelog/v2.8.md:1 +msgid "Version 2.8.4 (2018-04-27)" +msgstr "" + +#: src/changelog/v2.8.md:2 +msgid "Fix error syncing due to too many card templates" +msgstr "" + +#: src/changelog/v2.8.md:4 +msgid "Version 2.8.3 (2017-11-10)" +msgstr "" + +#: src/changelog/v2.8.md:5 +msgid "Fix crash adding a picture from camera" +msgstr "" + +#: src/changelog/v2.8.md:6 +msgid "Fix add note icon disappearing in browser after search" +msgstr "" + +#: src/changelog/v2.8.md:7 +msgid "Fix translations from Glosbe" +msgstr "" + +#: src/changelog/v2.8.md:8 +msgid "Fix crash long-tapping when no deck is selected" +msgstr "" + +#: src/changelog/v2.8.md:9 +msgid "Fix crash entering advanced settings on some devices" +msgstr "" + +#: src/changelog/v2.8.md:10 +msgid "Fix incorrect graph display in statistics" +msgstr "" + +#: src/changelog/v2.8.md:11 +msgid "Fix deck not changing properly in statistics" +msgstr "" + +#: src/changelog/v2.8.md:12 +msgid "Fix rounding error in statistics weekly breakdown" +msgstr "" + +#: src/changelog/v2.8.md:13 +msgid "Fix spurious new deck created on model rename" +msgstr "" + +#: src/changelog/v2.8.md:14 +msgid "Improve error message on exception during media sync" +msgstr "" + +#: src/changelog/v2.8.md:15 +msgid "Improve animation when transitioning between screens" +msgstr "" + +#: src/changelog/v2.8.md:16 +msgid "Use a round icon on devices that support it" +msgstr "" + +#: src/changelog/v2.8.md:18 +msgid "Version 2.8.2 (2017-02-28)" +msgstr "" + +#: src/changelog/v2.8.md:19 +msgid "Fix bugs showing confirmation dialogs in various places" +msgstr "" + +#: src/changelog/v2.8.md:20 +msgid "Fix uncommon crash showing dialog after sync" +msgstr "" + +#: src/changelog/v2.8.md:22 +msgid "Version 2.8.1 (2017-02-06)" +msgstr "" + +#: src/changelog/v2.8.md:23 +msgid "Allow sending exported apkg to arbitrary app (e.g. Google Drive)" +msgstr "" + +#: src/changelog/v2.8.md:24 +msgid "Allow AnkiWeb to display a warning on sync completion" +msgstr "" + +#: src/changelog/v2.8.md:25 +msgid "Fix potential full-sync after sync cancellation" +msgstr "" + +#: src/changelog/v2.8.md:26 +msgid "Fix media sync sometimes scanning all files again" +msgstr "" + +#: src/changelog/v2.8.md:27 +msgid "Fix removing $ character when importing media files" +msgstr "" + +#: src/changelog/v2.8.md:28 +msgid "Improve automatic card answer timing when audio is played" +msgstr "" + +#: src/changelog/v2.8.md:29 +msgid "Improve rendering of some statistics" +msgstr "" + +#: src/changelog/v2.8.md:30 +msgid "Fix some crashes in the Russian, Vietnamese, and Chinese translations" +msgstr "" + +#: src/changelog/v2.8.md:31 +msgid "Fix crash sending exported apkg by email. NB: Export path can no longer be modified." +msgstr "" + +#: src/changelog/v2.7.md:1 +msgid "Version 2.7 (2016-10-16)" +msgstr "" + +#: src/changelog/v2.7.md:2 +msgid "Add pull-to-sync feature" +msgstr "" + +#: src/changelog/v2.7.md:3 +msgid "Add option to place answer buttons at the top" +msgstr "" + +#: src/changelog/v2.7.md:4 +msgid "Add widget to directly access \"Add note\" screen" +msgstr "" + +#: src/changelog/v2.7.md:5 +msgid "Fix issue with importing whole collections and restoring backups" +msgstr "" + +#: src/changelog/v2.7.md:6 +msgid "Fix deck import failing after the first successful one" +msgstr "" + +#: src/changelog/v2.7.md:7 +msgid "Fix cards in learning queue not being randomized" +msgstr "" + +#: src/changelog/v2.7.md:8 +msgid "Fix crash with fullscreen mode and hidden answer buttons" +msgstr "" + +#: src/changelog/v2.7.md:9 +msgid "Fix rare crash when opening deck options" +msgstr "" + +#: src/changelog/v2.7.md:10 +msgid "Improve support with TalkBack" +msgstr "" + +#: src/changelog/v2.6.md:1 +msgid "Version 2.6.1 (2016-07-08)" +msgstr "" + +#: src/changelog/v2.6.md:2 +msgid "Add card cycling in previewer (similar to desktop client)" +msgstr "" + +#: src/changelog/v2.6.md:3 +msgid "Add option to hide 'minutes left' in reviewer" +msgstr "" + +#: src/changelog/v2.6.md:4 +msgid "Fix language from app setting not always being used" +msgstr "" + +#: src/changelog/v2.6.md:5 +msgid "Fix not being able to play back new sound recording" +msgstr "" + +#: src/changelog/v2.6.md:6 +msgid "Fix potential crash on Android 2.3 (Gingerbread)" +msgstr "" + +#: src/changelog/v2.6.md:7 +msgid "Improved use of horizontal space when resizing large images" +msgstr "" + +#: src/changelog/v2.6.md:8 +msgid "Minor adjustment to black theme colors" +msgstr "" + +#: src/changelog/v2.6.md:10 +msgid "Version 2.6 (2016-06-14)" +msgstr "" + +#: src/changelog/v2.6.md:11 +msgid "Add two new themes (black, plain), selectable in preferences" +msgstr "" + +#: src/changelog/v2.6.md:12 +msgid "Make reviewer app bar icons customizable" +msgstr "" + +#: src/changelog/v2.6.md:13 +msgid "Split \"hide / delete\" menu in reviewer into \"bury\", \"suspend\", \"delete note\"" +msgstr "" + +#: src/changelog/v2.6.md:14 +msgid "Reviewer undo button now removes last stroke when whiteboard in use" +msgstr "" + +#: src/changelog/v2.6.md:15 +msgid "Add menu entry to change TTS language from reviewer" +msgstr "" + +#: src/changelog/v2.6.md:16 +msgid "Add more of the statistics available on the desktop client" +msgstr "" + +#: src/changelog/v2.6.md:17 +msgid "Add \"advanced statistics\" plugin (must be enabled in advanced settings)" +msgstr "" + +#: src/changelog/v2.6.md:18 +msgid "Add setting to configure custom sync server (advanced)" +msgstr "" + +#: src/changelog/v2.6.md:19 +msgid "Fix card templates created in AnkiDroid incorrectly using bold style" +msgstr "" + +#: src/changelog/v2.6.md:20 +msgid "Fix many importing issues (behavior now consistent with the desktop client)" +msgstr "" + +#: src/changelog/v2.6.md:21 +msgid "Fix long-tapping card in browser not always working" +msgstr "" + +#: src/changelog/v2.6.md:22 +msgid "Update sound playback button image" +msgstr "" + +#: src/changelog/v2.6.md:23 +msgid "Reduce size of whiteboard and gesture area for better interoperability with full screen" +msgstr "" + +#: src/changelog/v2.6.md:24 +msgid "Improve error messages with inaccessible collections" +msgstr "" + +#: src/changelog/v2.6.md:25 +msgid "Allow auto-play of HTML media elements (for templates that enable it)" +msgstr "" + +#: src/changelog/v2.6.md:26 +msgid "Significant updates to the content provider and API (for developers; see documentation)" +msgstr "" + +#: src/changelog/v2.6.md:27 +msgid "Many small bug fixes, improvements, theme adjustments, translation updates" +msgstr "" + +#: src/changelog/v2.5.md:1 +msgid "Version 2.5.4 (2015-12-14)" +msgstr "" + +#: src/changelog/v2.5.md:2 +msgid "Fix background color in overflow menu of deck picker" +msgstr "" + +#: src/changelog/v2.5.md:4 +msgid "Version 2.5.3 (2015-12-14)" +msgstr "" + +#: src/changelog/v2.5.md:5 +msgid "Fix floating action button (blue +) interfering with deck list on Android 2.3" +msgstr "" + +#: src/changelog/v2.5.md:6 +msgid "Fix opening apkg files from Gmail" +msgstr "" + +#: src/changelog/v2.5.md:7 +msgid "Fix automatic playback of consecutive videos" +msgstr "" + +#: src/changelog/v2.5.md:8 +msgid "Add a new launch screen" +msgstr "" + +#: src/changelog/v2.5.md:9 +msgid "Improve behaviour surrounding the deck overview screen" +msgstr "" + +#: src/changelog/v2.5.md:10 +msgid "Multiple media files can now be added to one field in the note editor" +msgstr "" + +#: src/changelog/v2.5.md:11 +msgid "Don't include unused media files on export" +msgstr "" + +#: src/changelog/v2.5.md:12 +msgid "Undo behaviour is now consistent with the desktop client (can no longer undo note edits)" +msgstr "" + +#: src/changelog/v2.5.md:13 +msgid "Enhancements to sync canceling" +msgstr "" + +#: src/changelog/v2.5.md:14 +msgid "Minor performance enhancements, crash fixes, and UI tweaks" +msgstr "" + +#: src/changelog/v2.5.md:16 +msgid "Version 2.5.2 (2015-12-04)" +msgstr "" + +#: src/changelog/v2.5.md:17 +msgid "Fix start-up crashes on Samsung devices running Android 4.2" +msgstr "" + +#: src/changelog/v2.5.md:18 +msgid "Fix crash for new users on Android 6.0" +msgstr "" + +#: src/changelog/v2.5.md:19 +msgid "Reverted to old typing method. The new method is now an option which is off by default." +msgstr "" + +#: src/changelog/v2.5.md:20 +msgid "You can now click on the numbers in the right-most part of the deck list to open the deck overview screen" +msgstr "" + +#: src/changelog/v2.5.md:21 +msgid "Various fixes to transition animations and progress bars" +msgstr "" + +#: src/changelog/v2.5.md:22 +msgid "Add option to remove empty cards (previously only possible on desktop)" +msgstr "" + +#: src/changelog/v2.5.md:23 +msgid "Remove: Google Translate filter. In practice, this feature had no effect and is not required" +msgstr "" + +#: src/changelog/v2.5.md:24 +msgid "Remove: Google image search for multimedia card. The image search API has been discontinued by Google and no longer works" +msgstr "" + +#: src/changelog/v2.5.md:26 +msgid "Version 2.5.1 (2015-12-01)" +msgstr "" + +#: src/changelog/v2.5.md:27 +msgid "Fix crash when loading deck list (could not open collection bug)" +msgstr "" + +#: src/changelog/v2.5.md:28 +msgid "Fix visible progress bar showing when answering card" +msgstr "" + +#: src/changelog/v2.5.md:30 +msgid "Version 2.5 (2015-11-30)" +msgstr "" + +#: src/changelog/v2.5.md:31 +msgid "Redesign of user interface to use material design" +msgstr "" + +#: src/changelog/v2.5.md:32 +msgid "Add new dark theme" +msgstr "" + +#: src/changelog/v2.5.md:33 +msgid "Simplify the study process by bypassing deck overview screen" +msgstr "" + +#: src/changelog/v2.5.md:34 +msgid "Add ability to add, edit, delete note types" +msgstr "" + +#: src/changelog/v2.5.md:35 +msgid "Add setting to enable auto-sync and a Tasker intent to trigger sync" +msgstr "" + +#: src/changelog/v2.5.md:36 +msgid "Replace \"instant add\" feature with new API for 3rd party apps to add cards directly to AnkiDroid" +msgstr "" + +#: src/changelog/v2.5.md:37 +msgid "\"Type in the answer\" input box now built into the card html itself" +msgstr "" + +#: src/changelog/v2.5.md:38 +msgid "Make fullscreen-mode immersive and added setting to hide answer buttons when using gestures" +msgstr "" + +#: src/changelog/v2.5.md:39 +msgid "Add css class for customizing card background color when night mode is enabled" +msgstr "" + +#: src/changelog/v2.5.md:40 +msgid "Allow changing media volume from the deck picker" +msgstr "" + +#: src/changelog/v2.5.md:41 +msgid "Add ability to save and view common searches in the card browser" +msgstr "" + +#: src/changelog/v2.5.md:42 +msgid "Browser now shows full question and answer in the results by default" +msgstr "" + +#: src/changelog/v2.5.md:43 +msgid "Only show tags relevant to that deck when doing custom study by tag" +msgstr "" + +#: src/changelog/v2.5.md:44 +msgid "Fix some bugs in the widget" +msgstr "" + +#: src/changelog/v2.5.md:45 +msgid "Remove \"simple interface\"" +msgstr "" + +#: src/changelog/v2.5.md:46 +msgid "Remove support for Android version 2.1 and 2.2 (minimum is now 2.3.3)" +msgstr "" + +#: src/changelog/v2.5.md:47 +msgid "Add support for Android 6 Marshmallow" +msgstr "" + +#: src/changelog/v2.5.md:48 +msgid "Disable write-ahead-logging in sqlite database" +msgstr "" + +#: src/changelog/v2.5.md:49 +msgid "Many other bug fixes and small improvements" +msgstr "" + +#: src/changelog/v2.4.md:1 +msgid "Version 2.4.4 (2015-10-20)" +msgstr "" + +#: src/changelog/v2.4.md:2 +msgid "Fix playback of sound files with apostrophes in file name" +msgstr "" + +#: src/changelog/v2.4.md:3 +msgid "Fix new card siblings not being buried for the same day" +msgstr "" + +#: src/changelog/v2.4.md:4 +msgid "Fix media on cards when using the Hebrew Fix option" +msgstr "" + +#: src/changelog/v2.4.md:5 +msgid "Fix crashes related to \"Relative overdueness\" and make this sort order available on AnkiDroid" +msgstr "" + +#: src/changelog/v2.4.md:6 +msgid "When mixing new and review cards, make their rotation more consistent with desktop" +msgstr "" + +#: src/changelog/v2.4.md:8 +msgid "Version 2.4.3 (2015-04-21)" +msgstr "" + +#: src/changelog/v2.4.md:9 +msgid "Fix \"unknown field\" bug" +msgstr "" + +#: src/changelog/v2.4.md:10 +msgid "Fix crash showing welcome screen on Android 2.3" +msgstr "" + +#: src/changelog/v2.4.md:11 +msgid "Fix crash caused by widget" +msgstr "" + +#: src/changelog/v2.4.md:12 +msgid "Fix rare crash in browser" +msgstr "" + +#: src/changelog/v2.4.md:13 +msgid "Fix a couple of sync issues" +msgstr "" + +#: src/changelog/v2.4.md:14 +msgid "Fix crash starting AnkiDroid on a small number of devices" +msgstr "" + +#: src/changelog/v2.4.md:15 src/changelog/v2.4.md:29 +msgid "Update translations" +msgstr "" + +#: src/changelog/v2.4.md:17 +msgid "Version 2.4.2 (2015-03-18)" +msgstr "" + +#: src/changelog/v2.4.md:18 +msgid "Fix some bugs with cloze templates" +msgstr "" + +#: src/changelog/v2.4.md:19 +msgid "Fix a translation error" +msgstr "" + +#: src/changelog/v2.4.md:21 +msgid "Version 2.4.1 (2015-03-15)" +msgstr "" + +#: src/changelog/v2.4.md:22 +msgid "Fix some bugs with filtered decks" +msgstr "" + +#: src/changelog/v2.4.md:23 +msgid "Improve importing of shared decks" +msgstr "" + +#: src/changelog/v2.4.md:24 +msgid "Open settings if AnkiDroid dir inaccessible" +msgstr "" + +#: src/changelog/v2.4.md:25 +msgid "Fix a bug with zooming" +msgstr "" + +#: src/changelog/v2.4.md:26 +msgid "Fix a bug where old card was still shown in reviewer after changing deck" +msgstr "" + +#: src/changelog/v2.4.md:27 +msgid "Fix some issues with cloze deletion" +msgstr "" + +#: src/changelog/v2.4.md:28 +msgid "Fix various crashes" +msgstr "" + +#: src/changelog/v2.4.md:31 +msgid "Version 2.4 (2015-01-28)" +msgstr "" + +#: src/changelog/v2.4.md:32 +msgid "Move \"preview\" feature to browser" +msgstr "" + +#: src/changelog/v2.4.md:33 +msgid "Add ability to change note type of existing flashcards" +msgstr "" + +#: src/changelog/v2.4.md:34 +msgid "Add ability to view and delete card templates" +msgstr "" + +#: src/changelog/v2.4.md:35 +msgid "Fix TTS for most devices" +msgstr "" + +#: src/changelog/v2.4.md:36 +msgid "Support playback of videos (see supported formats [here](http://developer.android.com/guide/appendix/media-formats.html))" +msgstr "" + +#: src/changelog/v2.4.md:37 +msgid "Improve rendering of second column in browser" +msgstr "" + +#: src/changelog/v2.4.md:38 +msgid "Improve detection of swipe gestures" +msgstr "" + +#: src/changelog/v2.4.md:39 +msgid "Increase number of languages in Glosbe translator" +msgstr "" + +#: src/changelog/v2.4.md:40 +msgid "Add support for Chromebooks" +msgstr "" + +#: src/changelog/v2.4.md:41 +msgid "New crash report system" +msgstr "" + +#: src/changelog/v2.4.md:42 +msgid "Bug fixes" +msgstr "" + +#: src/changelog/v2.3.md:1 +msgid "Version 2.3.2 (2014-11-06)" +msgstr "" + +#: src/changelog/v2.3.md:2 +msgid "Bug fixes: Sync, TTS, Remote images, Advanced editor, Export" +msgstr "" + +#: src/changelog/v2.3.md:3 +msgid "Note: This is the last version of AnkiDroid supported by AnkiWeb. Previous versions will not sync." +msgstr "" + +#: src/changelog/v2.3.md:5 +msgid "Version 2.3 (2014-10-27)" +msgstr "" + +#: src/changelog/v2.3.md:6 +msgid "Add new user manual" +msgstr "" + +#: src/changelog/v2.3.md:7 +msgid "Make statistics identical to Anki Desktop" +msgstr "" + +#: src/changelog/v2.3.md:8 +msgid "Fixes to media sync" +msgstr "" + +#: src/changelog/v2.3.md:9 +msgid "Fix bug where images were not showing" +msgstr "" + +#: src/changelog/v2.3.md:10 +msgid "Change layout of note editor" +msgstr "" + +#: src/changelog/v2.3.md:11 +msgid "Add new disable whiteboard option to reviewer and update icons" +msgstr "" + +#: src/changelog/v2.3.md:12 +msgid "Add full support for APKG export and import" +msgstr "" + +#: src/changelog/v2.3.md:13 +msgid "Add feature to email exported APKG" +msgstr "" + +#: src/changelog/v2.3.md:14 +msgid "Increase default number of backups and use APKG" +msgstr "" + +#: src/changelog/v2.3.md:15 +msgid "Make preview card accessible from card browser" +msgstr "" + +#: src/changelog/v2.3.md:16 +msgid "Make shared decks download with Android browser" +msgstr "" + +#: src/changelog/v2.3.md:17 +msgid "Add reset and reschedule feature in note editor" +msgstr "" + +#: src/changelog/v2.3.md:18 +msgid "Add a new notification system and icon" +msgstr "" + +#: src/changelog/v2.3.md:19 +msgid "Replace tutorial deck with new welcome screen" +msgstr "" + +#: src/changelog/v2.3.md:20 +msgid "Disable opening navigation drawer from reviewer when swipe is used" +msgstr "" + +#: src/changelog/v2.3.md:21 +msgid "Improve audio recording quality" +msgstr "" + +#: src/changelog/v2.3.md:22 +msgid "Support sticky fields when enabled in Anki Desktop" +msgstr "" + +#: src/changelog/v2.3.md:23 +msgid "Many other bug fixes" +msgstr "" + +#: src/changelog/v2.2.md:1 +msgid "Version 2.2.3 (2014-08-04)" +msgstr "" + +#: src/changelog/v2.2.md:2 +msgid "New media sync protocol" +msgstr "" + +#: src/changelog/v2.2.md:3 +msgid "Fix 2 bugs for opening links and resuming the app" +msgstr "" + +#: src/changelog/v2.2.md:5 +msgid "Version 2.2 (2014-07-21)" +msgstr "" + +#: src/changelog/v2.2.md:6 +msgid "Redesign layout" +msgstr "" + +#: src/changelog/v2.2.md:7 +msgid "Add pictures and sounds to flashcards (experimental)" +msgstr "" + +#: src/changelog/v2.2.md:8 +msgid "Make second column in card browser configurable" +msgstr "" + +#: src/changelog/v2.2.md:9 +msgid "Make images on flashcards zoomable" +msgstr "" + +#: src/changelog/v2.2.md:10 +msgid "Improve preview feature and access via action bar" +msgstr "" + +#: src/changelog/v2.2.md:11 +msgid "Simplify menus and settings" +msgstr "" + +#: src/changelog/v2.2.md:12 +msgid "Make slow searches in card browser cancellable" +msgstr "" + +#: src/changelog/v2.2.md:13 +msgid "Improve adding/removing tags" +msgstr "" + +#: src/changelog/v2.2.md:14 +msgid "Fix \"type in the answer\" and cloze deletion features" +msgstr "" + +#: src/changelog/v2.2.md:15 +msgid "Fix whiteboard feature" +msgstr "" + +#: src/changelog/v2.2.md:16 +msgid "Restore backups from within the app" +msgstr "" + +#: src/changelog/v2.2.md:17 +msgid "Make volume duck on any background music when sounds played" +msgstr "" + +#: src/changelog/v2.2.md:18 +msgid "Make playing of sounds consistent with Desktop version" +msgstr "" + +#: src/changelog/v2.2.md:19 +msgid "Remove animations feature due to being buggy" +msgstr "" + +#: src/changelog/v2.2.md:20 +msgid "Improve speed of showing cards" +msgstr "" + +#: src/changelog/v2.2.md:21 +msgid "Remove duplicate check dialog when adding new flashcards" +msgstr "" + +#: src/changelog/v2.2.md:22 +msgid "Remove swap button when adding or editing flashcards" +msgstr "" + +#: src/changelog/v2.2.md:23 +msgid "Remove kanji info feature (will become optional plugin in the future)" +msgstr "" + +#: src/changelog/v2.2.md:24 +msgid "Make minimum Android version 2.1" +msgstr "" + +#: src/changelog/v2.2.md:25 +msgid "Fix lots of bugs" +msgstr "" + +#: src/changelog/v2.1.md:1 +msgid "Version 2.1.3 (2014-04-05)" +msgstr "" + +#: src/changelog/v2.1.md:2 +msgid "Create new notes in correct deck" +msgstr "" + +#: src/changelog/v2.1.md:3 +msgid "TTS fixes" +msgstr "" + +#: src/changelog/v2.1.md:5 +msgid "Version 2.1 (2014-03-27)" +msgstr "" + +#: src/changelog/v2.1.md:6 +msgid "Lots of Bug Fixes" +msgstr "" + +#: src/changelog/v2.1.md:7 +msgid "New custom study option with improved tag selection" +msgstr "" + +#: src/changelog/v2.1.md:8 +msgid "New preview card feature in note editor (experimental)" +msgstr "" + +#: src/changelog/v2.1.md:9 +msgid "New override font preference in addition to default font" +msgstr "" + +#: src/changelog/v2.1.md:10 +msgid "New \"Kanji Info\" feature (enabled in preferences->reviewing->Kanji Info)" +msgstr "" + +#: src/changelog/v2.1.md:11 +msgid "Improve Aedict integration" +msgstr "" + +#: src/changelog/v2.1.md:12 +msgid "Support for Samsung Multi-Window" +msgstr "" + +#: src/changelog/v2.1.md:13 +msgid "Fix Some TTS Issues" +msgstr "" + +#: src/changelog/v2.1.md:14 +msgid "Updated Translations" +msgstr "" + +#: src/changelog/v2.1.md:15 +msgid "Remove unused media check when deleting decks" +msgstr "" + +#: src/changelog/v2.1.md:16 +msgid "Significantly increase speed for reducing filtered decks" +msgstr "" + +#: src/changelog/v2.1.md:17 +msgid "Remove upgrade wizard" +msgstr "" + +#: src/changelog/v2.0.md:1 +msgid "Version 2.0.4 (2014-02-03)" +msgstr "" + +#: src/changelog/v2.0.md:2 +msgid "Fix issue with typing answers" +msgstr "" + +#: src/changelog/v2.0.md:3 +msgid "Default font now overrides card font" +msgstr "" + +#: src/changelog/v2.0.md:4 +msgid "Fixed audio playback image being covered by text on Android 2.3" +msgstr "" + +#: src/changelog/v2.0.md:5 +msgid "Fixed reviewer crash when language set to Romanian" +msgstr "" + +#: src/changelog/v2.0.md:6 +msgid "Translation fixes" +msgstr "" + +#: src/changelog/v2.0.md:8 +msgid "Version 2.0.2 (2013-12-15)" +msgstr "" + +#: src/changelog/v2.0.md:9 +msgid "Fixed lots of crashes" +msgstr "" + +#: src/changelog/v2.0.md:10 +msgid "Tablet UI fixes" +msgstr "" + +#: src/changelog/v2.0.md:11 +msgid "Fixed new card ordering issues" +msgstr "" + +#: src/changelog/v2.0.md:12 +msgid "Card appearance now matches desktop Anki. (Centering cards is off by default but can be re-enabled)" +msgstr "" + +#: src/changelog/v2.0.md:13 +msgid "Option groups can now be changed in AnkiDroid" +msgstr "" + +#: src/changelog/v2.0.md:14 +msgid "Clear error message when using a bad template" +msgstr "" + +#: src/changelog/v2.0.md:15 +msgid "Fixed timeboxing notifications" +msgstr "" + +#: src/changelog/v2.0.md:16 +msgid "Properly scale images" +msgstr "" + +#: src/changelog/v2.0.md:17 +msgid "Better custom font handling" +msgstr "" + +#: src/changelog/v2.0.md:18 +msgid "More settings (next day starts at, timeboxing value, etc.)" +msgstr "" + +#: src/changelog/v2.0.md:19 +msgid "Changing AnkiDroid interface language now works." +msgstr "" + +#: src/changelog/v2.0.md:20 +msgid "Fixed import/shared deck download issues (\"not a valid apkg file\")" +msgstr "" + +#: src/changelog/v2.0.md:21 +msgid "Fixed invisible text on Motorola devices" +msgstr "" + +#: src/changelog/v2.0.md:22 +msgid "Focus on answer when revealed" +msgstr "" + +#: src/changelog/v2.0.md:23 +msgid "Filtered decks are now blue in deck list" +msgstr "" + +#: src/changelog/v2.0.md:24 +msgid "Removed unused circle button in note editor" +msgstr "" + +#: src/changelog/v2.0.md:26 +msgid "Version 2.0.1 (2013-02-06)" +msgstr "" + +#: src/changelog/v2.0.md:27 +msgid "Upgrade wizard" +msgstr "" + +#: src/changelog/v2.0.md:28 +msgid "Fix importing apkgs" +msgstr "" + +#: src/changelog/v2.0.md:29 +msgid "Fix media syncing" +msgstr "" + +#: src/changelog/v2.0.md:31 +msgid "Version 2.0 (2013-01-03)" +msgstr "" + +#: src/changelog/v2.0.md:32 +msgid "complete revision" +msgstr "" + +#: src/changelog/v2.0.md:33 +msgid "libanki2.0 scheduling" +msgstr "" + +#: src/changelog/v2.0.md:34 +msgid "new learning mode" +msgstr "" + +#: src/changelog/v2.0.md:35 +msgid "new layout" +msgstr "" + +#: src/changelog/v2.0.md:36 +msgid "merge syncing possible now" +msgstr "" + +#: src/changelog/v2.0.md:37 +msgid "better statistics" +msgstr "" + +#: src/changelog/v2.0.md:38 +msgid "decks are now saved in a single collection" +msgstr "" + +#: src/changelog/v2.0.md:39 +msgid "options are shareable now" +msgstr "" + +#: src/changelog/v2.0.md:40 +msgid "tablet layout" +msgstr "" + +#: src/changelog/v2.0.md:41 +msgid "tons of performance improvements" +msgstr "" + +#: src/changelog/v2.0.md:42 +msgid "card import function" +msgstr "" + +#: src/changelog/v2.0.md:43 +msgid "collection can be saved on internal memory" +msgstr "" + +#: src/changelog/v0.1-to-1.1.3.md:2 +msgid "AnkiDroid has continuously evolved collectively as an open source project, with the first version released to the Google Market on [June 28 2009](http://nicolas-raoul.blogspot.jp/2009/06/just-published-ankidroid-on-market.html). " +msgstr "" + +#: src/changelog/v0.1-to-1.1.3.md:4 +msgid "Version 1.1.3 was the last 1.x version (released on 26th June 2012), before the incompatible AnkiDroid v2.0 was released, essentially rewritten from scratch to be compatible with the new Anki Desktop v2.0." +msgstr "" + diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 0000000..250cf1c --- /dev/null +++ b/po/ja.po @@ -0,0 +1,6445 @@ +msgid "" +msgstr "" +"Project-Id-Version: ankidroiddocs\n" +"POT-Creation-Date: 2024-02-01T17:14:41Z\n" +"PO-Revision-Date: 2024-02-01 17:15\n" +"Last-Translator: \n" +"Language-Team: Japanese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: ankidroiddocs\n" +"X-Crowdin-Project-ID: 645072\n" +"X-Crowdin-Language: ja\n" +"X-Crowdin-File: messages.pot\n" +"X-Crowdin-File-ID: 2\n" + +#: src/SUMMARY.md:1 +msgid "Summary" +msgstr "" + +#: src/SUMMARY.md:3 src/intro.md:1 src/intro.md:1 +msgid "Introduction" +msgstr "" + +#: src/SUMMARY.md:4 src/getting-started.md:1 +msgid "Getting started" +msgstr "" + +#: src/SUMMARY.md:6 src/deck-picker.md:1 +msgid "The Deck List" +msgstr "" + +#: src/SUMMARY.md:8 src/drawer.md:1 +msgid "Navigation Drawer" +msgstr "" + +#: src/SUMMARY.md:10 src/deck-overview.md:1 +msgid "Deck Overview Screen" +msgstr "" + +#: src/SUMMARY.md:12 src/reviewer.md:1 +msgid "Study Screen" +msgstr "" + +#: src/SUMMARY.md:14 src/adding-notes.md:1 +msgid "Add Note Screen" +msgstr "" + +#: src/SUMMARY.md:16 src/editing-notes.md:1 +msgid "Edit Note Screen" +msgstr "" + +#: src/SUMMARY.md:18 src/browser.md:1 +msgid "Finding/Searching/Browsing" +msgstr "" + +#: src/SUMMARY.md:20 src/filtered-deck.md:1 +msgid "Filtered Decks" +msgstr "" + +#: src/SUMMARY.md:22 src/importing/importing-anki-files.md:1 +msgid "Importing Anki Files" +msgstr "" + +#: src/SUMMARY.md:23 src/importing/importing-anki-databases.md:1 +msgid "Importing Anki Databases (.anki2)" +msgstr "" + +#: src/SUMMARY.md:25 src/exporting.md:1 +msgid "Exporting Anki Files" +msgstr "" + +#: src/SUMMARY.md:27 src/backups.md:1 +msgid "Automatic Backups" +msgstr "" + +#: src/SUMMARY.md:29 src/settings.md:1 +msgid "Preferences" +msgstr "" + +#: src/SUMMARY.md:31 src/gestures.md:1 +msgid "Gestures" +msgstr "" + +#: src/SUMMARY.md:33 src/note-formatting-toolbar.md:1 +msgid "Note Formatting Toolbar" +msgstr "" + +#: src/SUMMARY.md:35 src/keyboard-shortcuts.md:1 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/SUMMARY.md:37 src/rtl.md:1 +msgid "Using Right-To-Left Languages with AnkiDroid" +msgstr "" + +#: src/SUMMARY.md:39 src/anki-desktop.md:1 +msgid "Using Anki Desktop with AnkiDroid" +msgstr "" + +#: src/SUMMARY.md:41 src/ankiweb-conflicts.md:1 +msgid "Dealing with merge conflicts on AnkiWeb" +msgstr "" + +#: src/SUMMARY.md:43 src/advanced-features/intro.md:1 +msgid "Advanced Features" +msgstr "" + +#: src/SUMMARY.md:44 src/advanced-features/mathjax.md:1 +msgid "MathJax Support" +msgstr "" + +#: src/SUMMARY.md:45 src/advanced-features/reverse-cards.md:1 +msgid "Reverse Cards" +msgstr "" + +#: src/SUMMARY.md:46 src/advanced-features/custom-fonts.md:1 +msgid "Custom Fonts" +msgstr "" + +#: src/SUMMARY.md:47 src/advanced-features/customizing-card-layout.md:1 +msgid "Custom Card Layout" +msgstr "" + +#: src/SUMMARY.md:48 src/advanced-features/type-in-answer.md:1 +msgid "Type in the answer feature" +msgstr "" + +#: src/SUMMARY.md:49 src/gestures.md:146 +#: src/advanced-features/advanced-statistics.md:1 +msgid "Advanced Statistics" +msgstr "" + +#: src/SUMMARY.md:50 src/advanced-features/reminders.md:1 +msgid "Reminders" +msgstr "" + +#: src/SUMMARY.md:51 src/advanced-features/set-language-hint.md:1 +msgid "Automatic Language Selection" +msgstr "" + +#: src/SUMMARY.md:54 +msgid "Help & Supports" +msgstr "" + +#: src/SUMMARY.md:55 src/beta-testing.md:1 +msgid "Beta testing" +msgstr "" + +#: src/SUMMARY.md:56 src/help.md:33 src/contributing.md:1 +msgid "Contributing to AnkiDroid" +msgstr "" + +#: src/SUMMARY.md:57 +msgid "Changelog" +msgstr "" + +#: src/SUMMARY.md:58 +msgid "Version 2.15" +msgstr "" + +#: src/SUMMARY.md:59 +msgid "Version 2.14" +msgstr "" + +#: src/SUMMARY.md:60 +msgid "Version 2.13" +msgstr "" + +#: src/SUMMARY.md:61 +msgid "Version 2.12" +msgstr "" + +#: src/SUMMARY.md:62 +msgid "Version 2.11" +msgstr "" + +#: src/SUMMARY.md:63 +msgid "Version 2.10" +msgstr "" + +#: src/SUMMARY.md:64 +msgid "Version 2.9" +msgstr "" + +#: src/SUMMARY.md:65 +msgid "Version 2.8" +msgstr "" + +#: src/SUMMARY.md:66 +msgid "Version 2.7" +msgstr "" + +#: src/SUMMARY.md:67 +msgid "Version 2.6" +msgstr "" + +#: src/SUMMARY.md:68 +msgid "Version 2.5" +msgstr "" + +#: src/SUMMARY.md:69 +msgid "Version 2.4" +msgstr "" + +#: src/SUMMARY.md:70 +msgid "Version 2.3" +msgstr "" + +#: src/SUMMARY.md:71 +msgid "Version 2.2" +msgstr "" + +#: src/SUMMARY.md:72 +msgid "Version 2.1" +msgstr "" + +#: src/SUMMARY.md:73 +msgid "Version 2.0" +msgstr "" + +#: src/SUMMARY.md:74 src/changelog/v0.1-to-1.1.3.md:1 +msgid "Version 0.1 to 1.1.3" +msgstr "" + +#: src/intro.md:3 src/intro.md:3 +msgid "Thank you for using AnkiDroid, the Android client for the popular [Anki](http://ankisrs.net) spaced repetition system. " +msgstr "" + +#: src/intro.md:5 src/intro.md:5 +msgid "Anki is spaced repetition technique which is simple but highly effective. It helps you memorize things by automatically repeating them across increasing intervals based on your responses with no need for you to keep track of what to study or when to study it. You create notes (or download shared decks) with content you need to memorize, and the scheduler will make sure you see the content when you need to." +msgstr "" + +#: src/intro.md:7 src/intro.md:7 +msgid "AnkiDroid is intended to be used in conjunction with Anki on your computer. While it is possible to function without it, some tasks are either only possible with, or a lot more efficient with Anki Desktop. Furthermore, it is **strongly recommended** to at least read [`Key Concepts`](https://docs.ankiweb.net/getting-started.html#key-concepts) section of the main Anki manual to understand the terminology used here." +msgstr "" + +#: src/intro.md:9 src/intro.md:9 +msgid "If this manual doesn't contain what you are looking for, please check the [AnkiDroid Wiki](https://github.com/ankidroid/Anki-Android/wiki) for a list of changes, instructions for submitting bug reports and feature requests, a list of frequently asked questions, and much more." +msgstr "" + +#: src/getting-started.md:2 +msgid "To start using AnkiDroid, we need to add some cards to study. From the main screen, tapping the big blue plus button will allow you to either add a new **note** (i.e. create new flashcards), download shared decks (decks that other people have created and shared online), or create new empty decks." +msgstr "" + +#: src/getting-started.md:4 +msgid "Please watch this 5 minute [tutorial video](https://www.youtube.com/watch?v=F2K1gOSdIZA), which gives an introduction to adding, downloading, and studying cards in AnkiDroid. More detailed information can be found in the sections below." +msgstr "" + +#: src/getting-started.md:6 +msgid "If you are an existing user of Anki Desktop wishing to import your decks from the computer, you might like to skip straight to the [using AnkiDroid with Anki Desktop](anki-desktop.md#using-anki-desktop-with-ankidroid) section." +msgstr "" + +#: src/deck-picker.md:3 +msgid "[Add button](#add-button)" +msgstr "" + +#: src/deck-picker.md:4 +msgid "[Add](#add)" +msgstr "" + +#: src/deck-picker.md:5 +msgid "[Get shared decks](#get-shared-decks)" +msgstr "" + +#: src/deck-picker.md:6 +msgid "[Create deck](#create-deck)" +msgstr "" + +#: src/deck-picker.md:7 +msgid "[App Bar](#app-bar)" +msgstr "" + +#: src/deck-picker.md:8 +msgid "[Navigation menu button](#navigation-menu-button)" +msgstr "" + +#: src/deck-picker.md:9 +msgid "[Sync button](#sync-button)" +msgstr "" + +#: src/deck-picker.md:10 +msgid "[Overflow menu button](#overflow-menu-button)" +msgstr "" + +#: src/deck-picker.md:11 +msgid "[Studying a Deck](#studying-a-deck)" +msgstr "" + +#: src/deck-picker.md:12 +msgid "[Other Deck Actions](#other-deck-actions)" +msgstr "" + +#: src/deck-picker.md:13 +msgid "[Rename deck](#rename-deck)" +msgstr "" + +#: src/deck-picker.md:14 +msgid "[Deck options](#deck-options)" +msgstr "" + +#: src/deck-picker.md:15 +msgid "[Custom study](#custom-study)" +msgstr "" + +#: src/deck-picker.md:16 +msgid "[Delete deck](#delete-deck)" +msgstr "" + +#: src/deck-picker.md:17 +msgid "[Export deck](#export-deck)" +msgstr "" + +#: src/deck-picker.md:18 src/deck-overview.md:11 +msgid "[Unbury](#unbury)" +msgstr "" + +#: src/deck-picker.md:19 +msgid "[Rebuild / Empty](#rebuild--empty)" +msgstr "" + +#: src/deck-picker.md:20 +msgid "[Clickable areas on the decks](#clickable-areas-on-the-decks)" +msgstr "" + +#: src/deck-picker.md:21 +msgid "[Deck expander](#deck-expander)" +msgstr "" + +#: src/deck-picker.md:22 +msgid "[Deck name](#deck-name)" +msgstr "" + +#: src/deck-picker.md:23 +msgid "[Count buttons](#count-buttons)" +msgstr "" + +#: src/deck-picker.md:24 +msgid "[Advanced Actions](#advanced-actions)" +msgstr "" + +#: src/deck-picker.md:25 src/gestures.md:11 +msgid "[Undo](#undo)" +msgstr "" + +#: src/deck-picker.md:26 +msgid "[Check database](#check-database)" +msgstr "" + +#: src/deck-picker.md:27 +msgid "[Check media](#check-media)" +msgstr "" + +#: src/deck-picker.md:28 +msgid "[Empty cards](#empty-cards)" +msgstr "" + +#: src/deck-picker.md:29 +msgid "[Restore from backup](#restore-from-backup)" +msgstr "" + +#: src/deck-picker.md:30 +msgid "[Manage note types](#manage-note-types)" +msgstr "" + +#: src/deck-picker.md:31 +msgid "[Import](#import)" +msgstr "" + +#: src/deck-picker.md:32 +msgid "[Export collection](#export-collection)" +msgstr "" + +#: src/deck-picker.md:33 +msgid "[Deck Counts](#deck-counts)" +msgstr "" + +#: src/deck-picker.md:35 +msgid "__Note:__ _This section onwards assumes you understand what [decks and cards](https://docs.ankiweb.net/getting-started.html#key-concepts) are_" +msgstr "" + +#: src/deck-picker.md:37 +msgid "The deck list is the screen you see when you start AnkiDroid. It displays a list of the decks which contain all of your flashcards, and allows you to perform various actions:" +msgstr "" + +#: src/deck-picker.md:39 +msgid "![decks.png](img/1-decks.png)" +msgstr "" + +#: src/deck-picker.md:41 +msgid "Add button" +msgstr "" + +#: src/deck-picker.md:42 +msgid "The big blue + button in the bottom right corner is used to add new material to AnkiDroid. Pressing it expands to give the following three options, which are also described in the [tutorial video](https://www.youtube.com/watch?v=F2K1gOSdIZA)." +msgstr "" + +#: src/deck-picker.md:44 +msgid "Add" +msgstr "" + +#: src/deck-picker.md:45 +msgid "Choose this option if you want to create your own flashcards (notes) with AnkiDroid. \"Notes\" and \"cards\" have specific meanings in Anki, which are [explained in the main Anki manual](https://docs.ankiweb.net/getting-started.html#key-concepts). Please see the tutorial video for a quick introduction to adding notes, or refer to the [adding notes](adding-notes.md#add-note-screen) section below for more detailed information." +msgstr "" + +#: src/deck-picker.md:47 +msgid "Get shared decks" +msgstr "" + +#: src/deck-picker.md:48 +msgid "To download a deck of cards from the internet that another user has contributed:" +msgstr "" + +#: src/deck-picker.md:49 +msgid "Ensure you're connected to the internet." +msgstr "" + +#: src/deck-picker.md:50 +msgid "Tap + and then **Get shared decks**. AnkiWeb will open." +msgstr "" + +#: src/deck-picker.md:51 +msgid "Select a category, or type in a search." +msgstr "" + +#: src/deck-picker.md:52 +msgid "Tap **Info** on a deck you'd like to study." +msgstr "" + +#: src/deck-picker.md:53 +msgid "Scroll down and tap **Download**." +msgstr "" + +#: src/deck-picker.md:54 +msgid "You browser will download the file and display a `download complete` notification. Tap this button." +msgstr "" + +#: src/deck-picker.md:56 +msgid "AnkiDroid will appear, and show a confirmation dialog. Tap the **Add** button." +msgstr "" + +#: src/deck-picker.md:57 +msgid "When the import completes, your deck should be ready to study." +msgstr "" + +#: src/deck-picker.md:59 +msgid "Create deck" +msgstr "" + +#: src/deck-picker.md:60 +msgid "To create a new empty deck:" +msgstr "" + +#: src/deck-picker.md:61 +msgid "Tap the **+** button and choose `Create deck`" +msgstr "" + +#: src/deck-picker.md:62 +msgid "Choose a name for the deck, for example `New Japanese`" +msgstr "" + +#: src/deck-picker.md:63 +msgid "Add cards to it following the `Add` instructions above" +msgstr "" + +#: src/deck-picker.md:65 src/reviewer.md:16 +msgid "App Bar" +msgstr "" + +#: src/deck-picker.md:66 +msgid "At the top of each screen in AnkiDroid is the App Bar, with buttons for performing various actions. The following actions are available from the app bar in the deck list:" +msgstr "" + +#: src/deck-picker.md:69 +msgid "Navigation menu button" +msgstr "" + +#: src/deck-picker.md:70 +msgid "Tapping the icon on the far left will show the [left navigation menu](drawer.md#navigation-drawer) for quickly navigating between the main parts of the app." +msgstr "" + +#: src/deck-picker.md:72 +msgid "Sync button" +msgstr "" + +#: src/deck-picker.md:73 +msgid "The circular button with arrows on the right is for synchronizing your cards with the cloud, as described in the [adding decks from cloud](anki-desktop.md#using-anki-desktop-with-ankidroid) section." +msgstr "" + +#: src/deck-picker.md:75 +msgid "Overflow menu button" +msgstr "" + +#: src/deck-picker.md:76 +msgid "On the far right is the overflow menu which contains less commonly used actions. These actions are described further below." +msgstr "" + +#: src/deck-picker.md:78 +msgid "**Hint:** long tapping on a button in the app bar anywhere in the app will display a textual hint describing what the button does!" +msgstr "" + +#: src/deck-picker.md:80 +msgid "Studying a Deck" +msgstr "" + +#: src/deck-picker.md:81 +msgid "To study the cards in a deck, simply tap on the deck name (or the \"STUDY\" button on a 10\" tablet), and AnkiDroid will switch to study mode. " +msgstr "" + +#: src/deck-picker.md:83 +msgid "Note that the currently selected deck is highlighted with a grey background, and if you have any [filtered decks](filtered-deck.md#filtered-decks) they will be highlighted using a blue font. Filtered decks are discussed elsewhere in the manual." +msgstr "" + +#: src/deck-picker.md:85 +msgid "Other Deck Actions" +msgstr "" + +#: src/deck-picker.md:86 +msgid "Long tapping on a deck will show a list of other actions available to perform on that deck:" +msgstr "" + +#: src/deck-picker.md:88 +msgid "Rename deck" +msgstr "" + +#: src/deck-picker.md:89 +msgid "Use this option to rename a deck" +msgstr "" + +#: src/deck-picker.md:91 src/reviewer.md:46 +msgid "Deck options" +msgstr "" + +#: src/deck-picker.md:92 +msgid "Tapping on deck options allows you to configure various deck specific study options. Please see the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options." +msgstr "" + +#: src/deck-picker.md:95 +msgid "Custom study" +msgstr "" + +#: src/deck-picker.md:96 +msgid "Allows you to choose from some convenient presets for studying outside of your normal schedule, for example increasing the study limit for the day. See the section on [filtered decks](filtered-deck.md#filtered-decks) for more detailed information." +msgstr "" + +#: src/deck-picker.md:98 +msgid "Delete deck" +msgstr "" + +#: src/deck-picker.md:99 +msgid "Use this option to delete a deck (note: this action is not reversible, although you can [restore from a backup](backups.md#automatic-backups)" +msgstr "" + +#: src/deck-picker.md:101 +msgid "Export deck" +msgstr "" + +#: src/deck-picker.md:102 +msgid "This option can be used to share a deck with other users. See the [exporting decks](exporting.md#exporting-anki-files) section for more information." +msgstr "" + +#: src/deck-picker.md:104 src/deck-overview.md:40 +msgid "Unbury" +msgstr "" + +#: src/deck-picker.md:105 src/deck-overview.md:41 +msgid "This option is only visible when the selected deck has cards that have been manually or automatically buried." +msgstr "" + +#: src/deck-picker.md:107 +msgid "Rebuild / Empty" +msgstr "" + +#: src/deck-picker.md:108 +msgid "If the selected deck is a [filtered decks](filtered-deck.md#filtered-decks) then you also have the option to rebuild or empty the cards in it." +msgstr "" + +#: src/deck-picker.md:111 +msgid "Clickable areas on the decks" +msgstr "" + +#: src/deck-picker.md:112 +msgid "Each deck in the list has three clickable areas:" +msgstr "" + +#: src/deck-picker.md:114 +msgid "Deck expander" +msgstr "" + +#: src/deck-picker.md:115 +msgid "If you are using [subdecks](https://docs.ankiweb.net/getting-started.html#decks), then a deck expander button may appear on the far left of the deck, which can be used to show / hide the subdecks. A ▶ icon means the deck has hidden subdecks which can be shown, a ▼ icon means the deck has visible subdecks that can be hidden, and no icon means that the deck has no subdecks. " +msgstr "" + +#: src/deck-picker.md:117 +msgid "**Note:** subdecks can be created by using the naming convention `PARENT::CHILD`." +msgstr "" + +#: src/deck-picker.md:119 +msgid "Deck name" +msgstr "" + +#: src/deck-picker.md:120 +msgid "This is the main clickable area, which will take you to the study screen if there are cards available to review." +msgstr "" + +#: src/deck-picker.md:122 +msgid "Count buttons" +msgstr "" + +#: src/deck-picker.md:123 +msgid "The count buttons on the far right of each deck act as a separate clickable area that takes you to the deck overview instead of the study screen. This can be useful if you want to quickly view the number of cards available in the deck." +msgstr "" + +#: src/deck-picker.md:125 +msgid "Advanced Actions" +msgstr "" + +#: src/deck-picker.md:126 +msgid "Some additional actions are located in the overflow menu for less common tasks, which are summarized below:" +msgstr "" + +#: src/deck-picker.md:128 src/reviewer.md:19 src/gestures.md:88 +#: src/keyboard-shortcuts.md:28 +msgid "Undo" +msgstr "" + +#: src/deck-picker.md:129 +msgid "After reviewing the last card in a study session, you can undo it from here." +msgstr "" + +#: src/deck-picker.md:131 +msgid "Check database" +msgstr "" + +#: src/deck-picker.md:132 +msgid "This can automatically fix a lot of problems with your database, and will also purge any unused tags. If you experience any problems with your collection, this is the first action you should try. " +msgstr "" + +#: src/deck-picker.md:134 +msgid "**NOTE:** Under some circumstances, check database will move cards to a deck named _!Recovered Cards_. If this occurs, please move the cards to an appropriate deck via the [card browser](browser.md#findingsearchingbrowsing), and delete _!Recovered Cards_ when it is empty." +msgstr "" + +#: src/deck-picker.md:136 +msgid "Check media" +msgstr "" + +#: src/deck-picker.md:137 +msgid "Try to run this if you experience any issues with media syncing." +msgstr "" + +#: src/deck-picker.md:139 +msgid "Empty cards" +msgstr "" + +#: src/deck-picker.md:140 +msgid "Remove any empty cards from your collection. See the [desktop documentation](https://docs.ankiweb.net/templates/generation.html#card-generation--deletion) for more." +msgstr "" + +#: src/deck-picker.md:142 +msgid "Restore from backup" +msgstr "" + +#: src/deck-picker.md:143 +msgid "Allows you to restore from one of AnkiDroid's [automatic backups](backups.md#automatic-backups)" +msgstr "" + +#: src/deck-picker.md:145 +msgid "Manage note types" +msgstr "" + +#: src/deck-picker.md:146 +msgid "Allows you to add, edit, and delete note types. See the [customizing card layout](advanced-features/customizing-card-layout.md) section for more help with this advanced feature.Keyboard Shortcuts" +msgstr "" + +#: src/deck-picker.md:148 +msgid "Import" +msgstr "" + +#: src/deck-picker.md:149 +msgid "Import a .apkg anki file containing a deck. See the [importing](importing/importing-anki-files.md) section for more." +msgstr "" + +#: src/deck-picker.md:151 +msgid "Export collection" +msgstr "" + +#: src/deck-picker.md:152 +msgid "Export entire collection as a collection.apkg file. See the [exporting](exporting.md) section for more." +msgstr "" + +#: src/deck-picker.md:154 +msgid "Deck Counts" +msgstr "" + +#: src/deck-picker.md:155 +msgid "Next to each deck, three numbers are displayed. The left, blue number, corresponds to how many new cards you have to learn today. Anki will introduce 20 new cards a day by default, and you can customize this number if you'd like. The red number in the middle is for the cards due to be studied today which are currently in the learning phase, and the green number is the cards which are due for review (i.e. cards which have already graduated from the learning phase). On a deck you've never studied before, these numbers will both be zero." +msgstr "" + +#: src/deck-picker.md:157 +msgid "As explained above, tapping on the counts will take you to the deck overview screen." +msgstr "" + +#: src/drawer.md:3 +msgid "![navigation_drawer.png](img/2-navigation_drawer.png)" +msgstr "" + +#: src/drawer.md:5 +msgid "The navigation drawer can be opened from most places in the application by pressing the left menu icon, or alternatively swiping outwards from anywhere on the far left side of the screen. It is used for quickly navigating between different parts of the application. You can switch to the following screens:" +msgstr "" + +#: src/drawer.md:9 +msgid "Decks" +msgstr "" + +#: src/drawer.md:10 +msgid "Takes you to the top level of the app where the list of cards are shown ([more info here](deck-picker.md))" +msgstr "" + +#: src/drawer.md:12 src/keyboard-shortcuts.md:8 src/keyboard-shortcuts.md:51 +msgid "Card Browser" +msgstr "" + +#: src/drawer.md:13 +msgid "Shows a list of all your cards ([more info here](browser.md))" +msgstr "" + +#: src/drawer.md:15 +msgid "Statistics" +msgstr "" + +#: src/drawer.md:16 +msgid "Helps you track your study progress ([more info in Anki manual](https://docs.ankiweb.net/stats.html#statistics) and [here](advanced-features/advanced-statistics.md))" +msgstr "" + +#: src/drawer.md:18 +msgid "Night mode" +msgstr "" + +#: src/drawer.md:19 +msgid "This switches the app to a dark theme which many users find is less straining on the eyes, particularly when reviewing in the dark. See the " +msgstr "" + +#: src/drawer.md:19 +msgid "wiki" +msgstr "" + +#: src/drawer.md:19 +msgid " for instructions on how to customize the card background and font color used in night mode." +msgstr "" + +#: src/drawer.md:21 +msgid "Settings" +msgstr "" + +#: src/drawer.md:22 +msgid "Allows you to customize the app ([more info here](settings.md))" +msgstr "" + +#: src/drawer.md:24 +msgid "Help" +msgstr "" + +#: src/drawer.md:25 +msgid "Opens this web page" +msgstr "" + +#: src/drawer.md:27 +msgid "Send feedback" +msgstr "" + +#: src/drawer.md:28 +msgid "Get support from the AnkiDroid team" +msgstr "" + +#: src/deck-overview.md:3 +msgid "[App bar](#app-bar)" +msgstr "" + +#: src/deck-overview.md:4 +msgid "[Ordinary decks](#ordinary-decks)" +msgstr "" + +#: src/deck-overview.md:5 +msgid "[Custom Study](#custom-study)" +msgstr "" + +#: src/deck-overview.md:6 +msgid "[Filtered decks](#filtered-decks)" +msgstr "" + +#: src/deck-overview.md:7 +msgid "[Empty deck](#empty-deck)" +msgstr "" + +#: src/deck-overview.md:8 +msgid "[Rebuild deck](#rebuild-deck)" +msgstr "" + +#: src/deck-overview.md:9 +msgid "[Overflow menu](#overflow-menu)" +msgstr "" + +#: src/deck-overview.md:10 +msgid "[Deck Options](#deck-options)" +msgstr "" + +#: src/deck-overview.md:13 +msgid "![deck_overview.png](img/3-deck_overview.png)" +msgstr "" + +#: src/deck-overview.md:15 +msgid "From the deck list, if you tap the counts area you will be taken to the deck overview screen. On tablets it is always shown in the area to the right of the deck list." +msgstr "" + +#: src/deck-overview.md:17 +msgid "On this screen you can view a summary of the deck, build custom study sessions, rebuild / empty filtered decks, and change deck options. When visible, pressing the study button will take you to the study screen for that deck." +msgstr "" + +#: src/deck-overview.md:19 +msgid "App bar" +msgstr "" + +#: src/deck-overview.md:20 +msgid "The icons that are shown in the app bar depend on whether your deck is an ordinary deck or a filtered deck." +msgstr "" + +#: src/deck-overview.md:22 +msgid "Ordinary decks" +msgstr "" + +#: src/deck-overview.md:24 +msgid "Custom Study" +msgstr "" + +#: src/deck-overview.md:25 +msgid "Tapping the wrench icon allows you to create a custom session, for example to do extra reviews outside your normal schedule, or study only certain cards inside a deck. See the [filtered deck section](filtered-deck.md) for more information on this." +msgstr "" + +#: src/deck-overview.md:27 +msgid "Filtered decks" +msgstr "" + +#: src/deck-overview.md:29 +msgid "Empty deck" +msgstr "" + +#: src/deck-overview.md:30 +msgid "Tapping the cross icon will empty all of the cards in the current filtered deck (i.e. return them to their original deck)." +msgstr "" + +#: src/deck-overview.md:32 +msgid "Rebuild deck" +msgstr "" + +#: src/deck-overview.md:33 +msgid "Tapping the rebuild icon will rebuild the current filtered deck according to the settings specified in filtered deck options." +msgstr "" + +#: src/deck-overview.md:35 +msgid "Overflow menu" +msgstr "" + +#: src/deck-overview.md:37 +msgid "Deck Options" +msgstr "" + +#: src/deck-overview.md:38 +msgid "Allows you to configure some options related to the current deck, such as the number of new cards and reviews to introduce each day. Please see the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options." +msgstr "" + +#: src/reviewer.md:3 +msgid "Tapping on the deck name from the deck list, or the study button from the deck overview screen will take you to the study screen where you do your study. " +msgstr "" + +#: src/reviewer.md:5 +msgid "![reviewer.png](img/4-reviewer.png)" +msgstr "" + +#: src/reviewer.md:7 +msgid "Basics" +msgstr "" + +#: src/reviewer.md:8 +msgid "If you have not used Anki on a computer before, you may like to have a look at the first [intro video](https://docs.ankiweb.net/getting-started.html#videos) before reading on, as it explains the basic review process." +msgstr "" + +#: src/reviewer.md:10 +msgid "On the top left of the screen you'll see three numbers. From the left, these correspond to new cards, learning cards, and cards to review. These are explained in more detail in the intro videos for the desktop program, so please [check them out](https://docs.ankiweb.net/getting-started.html#videos) if you haven't already." +msgstr "" + +#: src/reviewer.md:12 +msgid "When you've looked at a card's question and remembered the answer, or decided you don't know it, tap the **show answer** button. When you do, the bottom area will change to display 2-4 answer buttons, depending on how you've answered the card previously. The buttons will display the time a card will next be shown, so 10m means **10 minutes** and **5d** means **5 days**. You can tap directly on these buttons to choose a particular answer. " +msgstr "" + +#: src/reviewer.md:14 +msgid "To make reviewing faster, you can configure gestures (for example taps and swipes) to answer cards without using the buttons. See the [preferences section](settings.md) for more information on configuring gestures." +msgstr "" + +#: src/reviewer.md:17 +msgid "The App Bar at the top of the study screen has several buttons for performing various common actions. The number of buttons which are shown is determined automatically by Android based on the size and resolution of your screen. If there is not enough space to show the button for a given action, then the action will be available from the menu instead. If you are unsure what a button does, you can long-tap on it to see the name of the action. The following action are available:" +msgstr "" + +#: src/reviewer.md:20 +msgid "Undo the answer you chose for the last card you studied (button always shown)." +msgstr "" + +#: src/reviewer.md:22 +msgid "Mark Card" +msgstr "" + +#: src/reviewer.md:23 +msgid "Adds a **marked** tag to the current note, so it can be easily found in the browser. This is useful when you want to take some action on the note at a later date, such as looking up a word when you get home. Marked cards also show a small star in the upper-right-hand corner during reviews." +msgstr "" + +#: src/reviewer.md:26 +msgid "Flag Card" +msgstr "" + +#: src/reviewer.md:27 +msgid "Adds a color coded **flag** (red, orange, green, or blue) This can be used as a general purpose indicator to differentiate your cards. Flags are represented by a number from 1-4, corresponding to the previously listed colors." +msgstr "" + +#: src/reviewer.md:30 +msgid "Edit Card" +msgstr "" + +#: src/reviewer.md:31 +msgid "Open the edit note screen, where you can change the content displayed on the flashcard (see the [editing notes section](editing-notes.md) for more help)" +msgstr "" + +#: src/reviewer.md:33 +msgid "Hide / Delete" +msgstr "" + +#: src/reviewer.md:34 +msgid "Give options to bury, suspend, or delete the current note or card" +msgstr "" + +#: src/reviewer.md:36 +msgid "**Bury card / Bury note:** Hides a card or all of the note’s cards from review until the next day. (If you want to unbury cards before then, you can choose “unbury” from the long-press menu in the [deck list](deck-picker.md), or from the [deck overview screen](deck-overview.md).) This is useful if you cannot answer the card at the moment or you want to come back to it another time. Burying can also happen automatically for cards of the same note. If cards were in learning when they are buried, they are moved back to the new card queue or review queue prior to being buried." +msgstr "" + +#: src/reviewer.md:37 +msgid "**Suspend card / Suspend note:** Hides a card or all of the note’s cards from review until they are manually unsuspended (by long-tapping a card in the [card browser](browser.md)). This is useful if you want to avoid reviewing the note for some time, but don’t want to delete it. If cards were in learning when they are suspended, they are moved back to the new card queue or review queue prior to being suspended." +msgstr "" + +#: src/reviewer.md:38 +msgid "**Delete note:** Deletes the note and all of its cards." +msgstr "" + +#: src/reviewer.md:40 +msgid "Replay Audio" +msgstr "" + +#: src/reviewer.md:41 +msgid "If the card has audio on the front or back, it will be played again." +msgstr "" + +#: src/reviewer.md:43 +msgid "Enable / Disable Whiteboard" +msgstr "" + +#: src/reviewer.md:44 +msgid "This action enables or disables the whiteboard feature for the current deck. The whiteboard feature allows you to draw on the screen, which is particularly useful for practicing drawing characters from languages such as Japanese. When the whiteboard has been enabled for the current deck, two new actions will become available for clearing and hiding the whiteboard. Disabling the whiteboard will hide these actions as well as the whiteboard itself." +msgstr "" + +#: src/reviewer.md:47 +msgid "Open the deck specific study options. See the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options." +msgstr "" + +#: src/reviewer.md:49 +msgid "Check Pronunciation" +msgstr "" + +#: src/reviewer.md:50 +msgid "This action enables or disables the temporary audio recorder toolbar at the top of the card. This feature allows you to record your voice and replay it. It is used primarily to check your pronunciation. This toolbar is composed of three buttons: play, stop playing and record microphone audio. This tool can be used while viewing either the question or the answer." +msgstr "" + +#: src/reviewer.md:52 +msgid "Reaching the end of the study session" +msgstr "" + +#: src/reviewer.md:53 +msgid "When you've finished the cards that are due to be studied today, you'll be taken back to the decks list and shown a congratulations message. From here you can select a different deck, or if you've finished studying for the day, you can simply tap the home button in order to close AnkiDroid (and you can also do this in the middle of reviews if you wish)." +msgstr "" + +#: src/reviewer.md:55 +msgid "If you wish to keep studying the same deck further, tap on the deck again which will give you several options for continued study. Please see the [filtered deck](filtered-deck.md) section for more on custom study." +msgstr "" + +#: src/adding-notes.md:3 +msgid "[Type](#type)" +msgstr "" + +#: src/adding-notes.md:4 +msgid "[Deck](#deck)" +msgstr "" + +#: src/adding-notes.md:5 +msgid "[Fields](#fields)" +msgstr "" + +#: src/adding-notes.md:6 +msgid "[Media Buttons](#media-buttons)" +msgstr "" + +#: src/adding-notes.md:7 +msgid "[Tags](#tags)" +msgstr "" + +#: src/adding-notes.md:8 +msgid "[Cards](#cards)" +msgstr "" + +#: src/adding-notes.md:10 +msgid "__Note:__ _This section onwards assumes you understand what [notes, fields, card templates, and note types](https://docs.ankiweb.net/getting-started.html#notes--fields) are_" +msgstr "" + +#: src/adding-notes.md:12 +msgid "To add a new note, tap the **+** button at the bottom of the deck list and choose **Add**." +msgstr "" + +#: src/adding-notes.md:14 +msgid "![adding.png](img/5-adding.png)" +msgstr "" + +#: src/adding-notes.md:16 +msgid "The following controls are available in the add note screen:" +msgstr "" + +#: src/adding-notes.md:18 +msgid "Type" +msgstr "" + +#: src/adding-notes.md:19 +msgid "Allows you to select the type of note you'd like to add. For most purposes the **Basic** note type is sufficient, but for example if you would like an extra card generated which is the reverse of the main card (i.e. shows the **Back** field on the front of the card), you could chose the **Basic (and reversed card)** note type." +msgstr "" + +#: src/adding-notes.md:22 +msgid "Deck" +msgstr "" + +#: src/adding-notes.md:23 +msgid "Allows you to change the deck the generated card/cards will be added to." +msgstr "" + +#: src/adding-notes.md:25 +msgid "Fields" +msgstr "" + +#: src/adding-notes.md:26 +msgid "Below the deck selector are the fields for the note (for example the **Basic** note type has two fields **Front** and **Back**). When you tap on a field, a keyboard will come up, allowing you to type in information." +msgstr "" + +#: src/adding-notes.md:28 +msgid "Media Buttons" +msgstr "" + +#: src/adding-notes.md:29 +msgid "Next to each field is an attach icon, which allows you to add media to your note (this feature is currently in the experimental phase). \n" +"Add image lets you add images either via your device's camera (if it has one), or from your photo library. Record audio allows you to record your voice and place it into a field. The advanced editor lets you automatically search for translations or pronunciation audio files online." +msgstr "" + +#: src/adding-notes.md:33 +msgid "Tags" +msgstr "" + +#: src/adding-notes.md:34 +msgid "Brings up a dialog which lets you add / remove tags from the note." +msgstr "" + +#: src/adding-notes.md:36 +msgid "Cards" +msgstr "" + +#: src/adding-notes.md:37 +msgid "Shows the names of the cards which will be generated for the selected note type. Tapping on this button will bring up a dialog which lets you preview the source code for the card template of the selected note type. From here you can edit, preview, add, and delete card templates. See the [cards and templates section](https://docs.ankiweb.net/templates/intro.html) of the Anki Desktop manual for more information about card templates." +msgstr "" + +#: src/adding-notes.md:39 +msgid "Long press in a text entry field to add a cloze deletion around the selected text, or an empty cloze deletion if there is no selected text." +msgstr "" + +#: src/adding-notes.md:41 +msgid "When you've finished typing in the content of a note, tap the tick icon in the app bar at the top to add it to your collection. Alternatively, if you want to go back to what you were doing without saving, you can tap the app icon, or use the hardware back button." +msgstr "" + +#: src/editing-notes.md:2 +msgid "The edit note screen can be opened by choosing edit while reviewing, or by opening a card in the browser. The edit screen is similar to the add new note screen mentioned above, with some key differences:" +msgstr "" + +#: src/editing-notes.md:5 +msgid "Changing the deck operates on the selected card (which is underlined in the **Cards** box). If a note type is chosen which has more than one card, only the currently selected card will be moved to the new deck." +msgstr "" + +#: src/editing-notes.md:8 +msgid "Changing the **Type** dropdown selector changes to the note type edit mode. In this mode, editing the content of the note (i.e. deck, fields, etc) is disabled, and if a custom note type with more than two fields is being used, additional buttons will appear which let you control the mapping of the fields to the new note type." +msgstr "" + +#: src/editing-notes.md:11 +msgid "If a note type is selected which has less cards than the original note type, only the first n cards will be kept. For example changing from **Basic (and reversed card)** to **Basic** will lead to only the first card being kept. To warn you of this, the text in the **Cards** box will appear red, and a confirmation dialog will be shown before the note is saved." +msgstr "" + +#: src/editing-notes.md:14 +msgid "Hint: to change the type for multiple notes in one go, or to customize the mapping between cards, use the **Change note type** option in the browser on Anki Desktop." +msgstr "" + +#: src/editing-notes.md:16 +msgid "There are also several advanced options available in the main menu:" +msgstr "" + +#: src/editing-notes.md:18 +msgid "Add note" +msgstr "" + +#: src/editing-notes.md:19 +msgid "Create a new empty note" +msgstr "" + +#: src/editing-notes.md:21 +msgid "Copy card" +msgstr "" + +#: src/editing-notes.md:22 +msgid "Copy the current note to a new editable note" +msgstr "" + +#: src/editing-notes.md:24 +msgid "Reset progress" +msgstr "" + +#: src/editing-notes.md:25 +msgid "Move the card to the end of the new card queue. The current state of the card is cleared, but not its revision history." +msgstr "" + +#: src/editing-notes.md:27 src/keyboard-shortcuts.md:59 +msgid "Reschedule" +msgstr "" + +#: src/editing-notes.md:28 +msgid "Allows you to reschedule as a review card on a given date. This is useful if you have imported already-learnt material, and you want to start it off with higher initial intervals." +msgstr "" + +#: src/browser.md:9 +msgid "[Searching](#searching)" +msgstr "" + +#: src/browser.md:10 +msgid "[tag:marked](#tagmarked)" +msgstr "" + +#: src/browser.md:11 +msgid "[is:due](#isdue)" +msgstr "" + +#: src/browser.md:12 +msgid "[front:rabbit](#frontrabbit)" +msgstr "" + +#: src/browser.md:13 +msgid "[flag:1](#flag1)" +msgstr "" + +#: src/browser.md:15 +msgid "You can search for or browse cards by tapping the **Card browser** button from the [navigation drawer](drawer.md)." +msgstr "" + +#: src/browser.md:17 +msgid "![img/6-browser.png](img/6-browser.png)" +msgstr "" + +#: src/browser.md:19 +msgid "The browser screen starts by displaying all the cards in the currently selected deck. You can search for cards in the selected deck by tapping the magnifying glass icon in the top. You can change the selected deck (or change to all decks) by choosing the deck from the dropdown list on the top left." +msgstr "" + +#: src/browser.md:21 +msgid "By default, the first column in the browser gives the text which will be shown on the question (i.e. front side) of the flashcard, and the second column shows the text from the answer (i.e. the back side) of the flashcard. " +msgstr "" + +#: src/browser.md:23 +msgid "The first column can also be configured to show the [sort field](https://docs.ankiweb.net/editing.html#customizing-fields) for a more compact display. The second column can be configured to show many different parameters by tapping the drop down menu in the column heading. " +msgstr "" + +#: src/browser.md:25 +msgid "Note that the content of the columns is dynamically calculated as your scroll through the list of the cards." +msgstr "" + +#: src/browser.md:27 +msgid "From the search results, you can tap on a card to edit it (see the [edit note section](editing-notes.md) above), or long-tapping on it will show a menu allowing you to perform the following actions:" +msgstr "" + +#: src/browser.md:29 +msgid "Mark / unmark note" +msgstr "" + +#: src/browser.md:30 +msgid "Add / remove the **marked** tag from the note. Cards with a marked note are highlighted in purple." +msgstr "" + +#: src/browser.md:32 +msgid "Flag card" +msgstr "" + +#: src/browser.md:33 +msgid "Change or remove the color coded **flag** on the card. Cards with a flag are highlighted in the flags color." +msgstr "" + +#: src/browser.md:35 +msgid "Suspend / unsuspend card" +msgstr "" + +#: src/browser.md:36 +msgid "Suspended cards are highlighted in yellow, and are not shown during review." +msgstr "" + +#: src/browser.md:38 src/gestures.md:107 +msgid "Delete note" +msgstr "" + +#: src/browser.md:39 +msgid "Delete the note of the currently selected card, and all cards belonging to that note. This action cannot be undone without [restoring from backup](backups.md)." +msgstr "" + +#: src/browser.md:41 +msgid "Preview" +msgstr "" + +#: src/browser.md:42 +msgid "Render the currently selected card so that you can see what it looks like in the reviewer." +msgstr "" + +#: src/browser.md:44 +msgid "Select multiple cards" +msgstr "" + +#: src/browser.md:45 +msgid "Long-tapping on a single card will select the single card. While that card is selected, if you long-tap on another card on your screen, then all of the cards between the first selected card and the last card will be selected. This allows for actions to be performed on multiple cards at once." +msgstr "" + +#: src/browser.md:47 +msgid "Searching" +msgstr "" + +#: src/browser.md:48 +msgid "AnkiDroid supports all the search strings that the desktop version of Anki does, allowing you to perform quite complex searches. Some examples:" +msgstr "" + +#: src/browser.md:50 +msgid "tag:marked" +msgstr "" + +#: src/browser.md:51 +msgid "show cards that with the tag **marked**" +msgstr "" + +#: src/browser.md:53 +msgid "is:due" +msgstr "" + +#: src/browser.md:54 +msgid "show only cards that are waiting for review" +msgstr "" + +#: src/browser.md:56 +msgid "front:rabbit" +msgstr "" + +#: src/browser.md:57 +msgid "show only cards where the front field is exactly **rabbit** " +msgstr "" + +#: src/browser.md:59 +msgid "flag:1" +msgstr "" + +#: src/browser.md:60 +msgid "show only cards marked with a red flag" +msgstr "" + +#: src/browser.md:62 +msgid "For a full list of the possibilities, please see the section in the [desktop manual](https://docs.ankiweb.net/searching.html)." +msgstr "" + +#: src/browser.md:64 +msgid "Alternatively, some more commonly used filters (marked, suspended, and tagged cards) can be quickly applied without manually typing them by choosing them from the overflow menu. You can also save and recall common search queries from the menu." +msgstr "" + +#: src/filtered-deck.md:3 +msgid "Anki is designed to optimize the learning process, so that you study the minimum amount necessary to remember the majority of your cards. Once the congratulations screen is reached, further study becomes a case of diminishing returns: the amount of extra time spent going over the same cards again is generally not worth the moderate increase in retention you'll see." +msgstr "" + +#: src/filtered-deck.md:5 +msgid "That said, if you have a test looming, or simply want to pass some time, it's possible to keep reviewing even after you are shown the congratulations message." +msgstr "" + +#: src/filtered-deck.md:7 +msgid "A **filtered deck** is a temporary deck that contains cards based on various criteria, such as **forgotten today**, `is tagged 'hard'`, and so on. After studying cards in a filtered deck, or when the filtered deck is deleted, the cards are automatically returned to their original deck." +msgstr "" + +#: src/filtered-deck.md:9 +msgid "The easiest way to create a filtered deck is by long clicking on a deck and choosing the **custom study** option. " +msgstr "" + +#: src/filtered-deck.md:11 +msgid "Advanced users can create a filtered deck manually, by choosing **Create filtered deck** from the overflow menu in the deck list screen." +msgstr "" + +#: src/filtered-deck.md:13 +msgid "For further information on filtered decks, please see the [desktop documentation](https://docs.ankiweb.net/filtered-decks.html#filtered-decks--cramming)." +msgstr "" + +#: src/importing/importing-anki-files.md:3 +msgid "You can import Anki files (with .apkg file format) directly into AnkiDroid. Other file formats cannot be imported directly into AnkiDroid, however flashcards from most other applications can be imported into Anki Desktop on your computer, which can then be [added into AnkiDroid in the usual way](../anki-desktop.md). See the [importing section of the Anki Desktop manual](https://docs.ankiweb.net/importing/intro.html) for help on importing into Anki Desktop." +msgstr "" + +#: src/importing/importing-anki-files.md:6 +msgid "As in Anki Desktop, AnkiDroid distinguishes between [the two types of .apkg files](https://docs.ankiweb.net/exporting.html) (**collection package** and **deck package**) based on the filename. Collection packages have the name **collection.colpkg**, and when imported will completely _replace all contents_ in AnkiDroid. Any apkg file which is **_not_** named something that ends in **.colpkg** will be treated as a deck package, which will be _merged with any existing content_ when imported into to AnkiDroid." +msgstr "" + +#: src/importing/importing-anki-files.md:8 +msgid "You can import .apkg Anki collection files into AnkiDroid either by opening them using the standard Android system, or by manually importing them from within AnkiDroid:" +msgstr "" + +#: src/importing/importing-anki-files.md:10 +msgid "Open the file using Android" +msgstr "" + +#: src/importing/importing-anki-files.md:11 +msgid "Apkg files are automatically associated with AnkiDroid, so for example if you open a .apkg email attachment which you sent to yourself, then AnkiDroid will automatically open the file and confirm if you want to import it. Simply click OK and the apkg file will be imported." +msgstr "" + +#: src/importing/importing-anki-files.md:13 +msgid "Import the file manually in AnkiDroid" +msgstr "" + +#: src/importing/importing-anki-files.md:14 +msgid "You can also manually import .apkg files as follows:" +msgstr "" + +#: src/importing/importing-anki-files.md:16 +msgid "Connect your device to your computer using USB" +msgstr "" + +#: src/importing/importing-anki-files.md:17 +msgid "Copy the .apkg from your computer to the AnkiDroid folder on your device" +msgstr "" + +#: src/importing/importing-anki-files.md:18 +msgid "Open AnkiDroid on your device" +msgstr "" + +#: src/importing/importing-anki-files.md:19 +msgid "From the main menu in the deck list, choose _Import_" +msgstr "" + +#: src/importing/importing-anki-files.md:20 +msgid "Choose the apkg file you just copied to your device when prompted" +msgstr "" + +#: src/importing/importing-anki-files.md:21 +msgid "Tap OK" +msgstr "" + +#: src/importing/importing-anki-databases.md:3 +msgid "AnkiDroid does not support directly importing Anki database (`.anki2`) files. A database import will replace your collection with the contents the provided file. If you want to perform a full replacement, you should import a `collection[.apkg/.colpkg]` created in the app with the export function." +msgstr "" + +#: src/importing/importing-anki-databases.md:5 +msgid "Importing anki2 files manually" +msgstr "" + +#: src/importing/importing-anki-databases.md:7 +msgid "This is not officially supported, but `.anki2` files can manually be imported if needed, in cases of troubleshooting for example:" +msgstr "" + +#: src/importing/importing-anki-databases.md:9 +msgid "Create a new folder on your Android file system" +msgstr "" + +#: src/importing/importing-anki-databases.md:10 +msgid "Obtain the full path to the folder as provided by your file manager, this will typically appear as: `/storage/emulated/0/`" +msgstr "" + +#: src/importing/importing-anki-databases.md:11 +msgid "Place the `.anki2` file in the newly created folder" +msgstr "" + +#: src/importing/importing-anki-databases.md:12 +msgid "Rename the file to `collection.anki2`" +msgstr "" + +#: src/importing/importing-anki-databases.md:13 +msgid "(If applicable) Temporarily log out of your AnkiWeb account: `Settings - AnkiDroid - AnkiWeb account`" +msgstr "" + +#: src/importing/importing-anki-databases.md:14 +msgid "Open `Settings - Advanced - AnkiDroid Directory` and set the AnkiDroid Directory to the newly created folder." +msgstr "" + +#: src/exporting.md:3 +msgid "AnkiDroid can export your flashcards in the .apkg Anki file format so that you can import them into Anki Desktop, or share them with other people. As in Anki Desktop, you can either export a [collection package or deck package](https://docs.ankiweb.net/exporting.html#packaged-decks), depending on what you are trying to achieve." +msgstr "" + +#: src/exporting.md:6 +msgid "There are two export options available: **include scheduling information** and **include media**. Generally the default options are sufficient, if you choose not to include scheduling information, Anki will assume that you are sharing the deck with other people, and will remove marked and leech tags so that they will have a clean copy of it." +msgstr "" + +#: src/exporting.md:8 +msgid "Exporting collection package" +msgstr "" + +#: src/exporting.md:9 +msgid "When exporting for use in Anki Desktop, you generally want to [export your entire collection](https://docs.ankiweb.net/exporting.html#collection-colpkg), including all your review history etc. " +msgstr "" + +#: src/exporting.md:11 src/exporting.md:28 +msgid "From the main menu in the decks screen:" +msgstr "" + +#: src/exporting.md:13 +msgid "Tap the **Export** item in the menu." +msgstr "" + +#: src/exporting.md:14 +msgid "Tap **OK** using default options" +msgstr "" + +#: src/exporting.md:15 +msgid "Tap **OK** again to email the exported collection.apkg file to yourself, or alternatively you can manually copy to your computer using USB" +msgstr "" + +#: src/exporting.md:17 +msgid "To import the file on your computer:" +msgstr "" + +#: src/exporting.md:19 +msgid "Save the file **collection.apkg** to your desktop" +msgstr "" + +#: src/exporting.md:20 +msgid "Double-click on the file to start Anki." +msgstr "" + +#: src/exporting.md:21 +msgid "Confirm you wish to replace, so that the deck from your mobile device overwrites the old data on your desktop." +msgstr "" + +#: src/exporting.md:23 +msgid "After importing, you can delete the apkg file on your desktop if you wish." +msgstr "" + +#: src/exporting.md:25 +msgid "Exporting deck package" +msgstr "" + +#: src/exporting.md:26 +msgid "If you want to share a deck in AnkiDroid with another user, you can export a deck package. " +msgstr "" + +#: src/exporting.md:30 +msgid "Long tap on the deck you wish to export" +msgstr "" + +#: src/exporting.md:31 +msgid "Tap **Export**" +msgstr "" + +#: src/exporting.md:32 +msgid "Tap **OK** using the default options" +msgstr "" + +#: src/exporting.md:33 +msgid "Tap **OK** again to email the exported apkg to another user" +msgstr "" + +#: src/backups.md:3 +msgid "AnkiDroid will automatically create backups of your collection for you. The backups include all your cards and statistics, but do not include sounds or images." +msgstr "" + +#: src/backups.md:5 +msgid "The backup is taken in the background when you first start the app. A backup will only happen if more than 5 hours has elapsed since the last time a backup was created. By default, AnkiDroid will store the last 8 backups; this number can be changed in the main settings." +msgstr "" + +#: src/backups.md:8 +msgid "You can restore a backup by choosing the _restore from backup_ option from the main menu of the [decks screen](deck-picker.md)." +msgstr "" + +#: src/settings.md:3 +msgid "[AnkiDroid](#ankidroid)" +msgstr "" + +#: src/settings.md:4 +msgid "[AnkiWeb account](#ankiweb-account)" +msgstr "" + +#: src/settings.md:5 +msgid "[Fetch media on sync](#fetch-media-on-sync)" +msgstr "" + +#: src/settings.md:6 +msgid "[Automatic synchronization](#automatic-synchronization)" +msgstr "" + +#: src/settings.md:7 +msgid "[Deck for new cards](#deck-for-new-cards)" +msgstr "" + +#: src/settings.md:8 +msgid "[Language](#language)" +msgstr "" + +#: src/settings.md:9 +msgid "[Error reporting mode](#error-reporting-mode)" +msgstr "" + +#: src/settings.md:10 +msgid "[Notifications](#notifications)" +msgstr "" + +#: src/settings.md:11 +msgid "[Notify when](#notify-when)" +msgstr "" + +#: src/settings.md:12 +msgid "[Vibrate](#vibrate)" +msgstr "" + +#: src/settings.md:13 +msgid "[Blink light](#blink-light)" +msgstr "" + +#: src/settings.md:14 +msgid "[Reviewing](#reviewing)" +msgstr "" + +#: src/settings.md:15 +msgid "[New card position](#new-card-position)" +msgstr "" + +#: src/settings.md:16 +msgid "[Start of next day](#start-of-next-day)" +msgstr "" + +#: src/settings.md:17 +msgid "[Learn ahead limit](#learn-ahead-limit)" +msgstr "" + +#: src/settings.md:18 +msgid "[Timebox limit](#timebox-limit)" +msgstr "" + +#: src/settings.md:19 +msgid "[Display](#display)" +msgstr "" + +#: src/settings.md:20 +msgid "[Keep screen on](#keep-screen-on)" +msgstr "" + +#: src/settings.md:21 +msgid "[Fullscreen mode](#fullscreen-mode)" +msgstr "" + +#: src/settings.md:22 +msgid "[Center align](#center-align)" +msgstr "" + +#: src/settings.md:23 +msgid "[Show button time](#show-button-time)" +msgstr "" + +#: src/settings.md:24 +msgid "[Card zoom](#card-zoom)" +msgstr "" + +#: src/settings.md:25 +msgid "[Image zoom](#image-zoom)" +msgstr "" + +#: src/settings.md:26 +msgid "[Answer button size](#answer-button-size)" +msgstr "" + +#: src/settings.md:27 +msgid "[Show remaining](#show-remaining)" +msgstr "" + +#: src/settings.md:28 +msgid "[Whiteboard](#whiteboard)" +msgstr "" + +#: src/settings.md:29 +msgid "[Stroke width](#stroke-width)" +msgstr "" + +#: src/settings.md:30 +msgid "[Black strokes](#black-strokes)" +msgstr "" + +#: src/settings.md:31 +msgid "[Automatic display answer](#automatic-display-answer)" +msgstr "" + +#: src/settings.md:32 +msgid "[Time to show answer](#time-to-show-answer)" +msgstr "" + +#: src/settings.md:33 +msgid "[Time to show next question](#time-to-show-next-question)" +msgstr "" + +#: src/settings.md:34 +msgid "[Fonts](#fonts)" +msgstr "" + +#: src/settings.md:35 +msgid "[Default font](#default-font)" +msgstr "" + +#: src/settings.md:36 +msgid "[Default font applicability](#default-font-applicability)" +msgstr "" + +#: src/settings.md:37 +msgid "[Browser and editor font](#browser-and-editor-font)" +msgstr "" + +#: src/settings.md:38 +msgid "[Card browser font scaling](#card-browser-font-scaling)" +msgstr "" + +#: src/settings.md:40 +msgid "The preferences screen can be accessed by opening the navigation drawer, and choosing **Settings**. It allows you to customize various application settings and how AnkiDroid appears." +msgstr "" + +#: src/settings.md:42 +msgid "The Preferences screen is divided up into different sections, which are covered below." +msgstr "" + +#: src/settings.md:44 +msgid "AnkiDroid" +msgstr "" + +#: src/settings.md:45 +msgid "These are the general settings which affect the whole app:" +msgstr "" + +#: src/settings.md:47 +msgid "AnkiWeb account" +msgstr "" + +#: src/settings.md:48 +msgid "Change the account used for syncing with the cloud. For more information on syncing, please see [this section](anki-desktop.md)." +msgstr "" + +#: src/settings.md:50 +msgid "Fetch media on sync" +msgstr "" + +#: src/settings.md:51 +msgid "By default, AnkiDroid will sync sounds and images as well as your cards and review history. If you disable this option, sounds and images will not be downloaded from or uploaded to the sync server by AnkiDroid." +msgstr "" + +#: src/settings.md:54 +msgid "Automatic synchronization" +msgstr "" + +#: src/settings.md:55 +msgid "Enable this option if you want AnkiDroid to sync every time you open and close the app. There is a limit of once every ten minutes for this behavior. Once a sync begins you can cancel it by pressing your device's back button, however it can take some time for the cancellation to take effect." +msgstr "" + +#: src/settings.md:57 +msgid "Users that want more fine-grained control over when sync occurred might like to use a 3rd party app like Tasker to automate synchronization. See the " +msgstr "" + +#: src/settings.md:57 +msgid "API documentation" +msgstr "" + +#: src/settings.md:57 +msgid " for more information on this." +msgstr "" + +#: src/settings.md:59 +msgid "Deck for new cards" +msgstr "" + +#: src/settings.md:60 +msgid "The default of **Use current deck** means that Anki saves the last-used note type for each deck and selects it again then next time you choose the deck (and, in addition, will start with the current deck selected when choosing Add from anywhere). The other option, **Decide by note type,** saves the last-used deck for each note type (and opens the add window to the last-used note type when you choose Add). This may be more convenient if you always use a single note type for each deck." +msgstr "" + +#: src/settings.md:62 +msgid "Language" +msgstr "" + +#: src/settings.md:63 +msgid "Change the language. Note: AnkiDroid translations are contributed by volunteers. If you find missing or incorrect translations, feel free to contribute to the translation project. More details can be found on the " +msgstr "" + +#: src/settings.md:63 +msgid "AnkiDroid Wiki" +msgstr "" + +#: src/settings.md:63 src/advanced-features/custom-fonts.md:15 +msgid "." +msgstr "" + +#: src/settings.md:65 +msgid "Error reporting mode" +msgstr "" + +#: src/settings.md:66 +msgid "Control whether or not AnkiDroid asks your permission before sending error reports to our error reporting system when AnkiDroid crashes. You can also disable the reporting feature entirely if you wish." +msgstr "" + +#: src/settings.md:68 +msgid "Notifications" +msgstr "" + +#: src/settings.md:69 +msgid "This subsection allows you configure when and how AnkiDroid shows alerts in the Android notification bar." +msgstr "" + +#: src/settings.md:71 +msgid "Notify when" +msgstr "" + +#: src/settings.md:72 +msgid "**Never notify** will disable all notifications from AnkiDroid. **Pending messages available** will only show important status updates like when a sync completed. **More than n cards due** will show a notification when you have more than n cards due (requires the widget to be enabled)." +msgstr "" + +#: src/settings.md:74 +msgid "Vibrate" +msgstr "" + +#: src/settings.md:75 +msgid "Checking this will make your device vibrate when showing a notification" +msgstr "" + +#: src/settings.md:77 +msgid "Blink light" +msgstr "" + +#: src/settings.md:78 +msgid "Checking this will make your device light blink when an unread notification exists (if your device has a notification LED)" +msgstr "" + +#: src/settings.md:81 +msgid "Reviewing" +msgstr "" + +#: src/settings.md:83 +msgid "The reviewing screen allows you to customize how AnkiDroid behaves when you're reviewing cards. Note that only the reviewing settings which are applied to **all decks** are shown here. There are more settings related to reviewing which are **deck specific**. These deck specific settings are located in **Deck options**." +msgstr "" + +#: src/settings.md:86 +msgid "New card position" +msgstr "" + +#: src/settings.md:87 +msgid "Controls when new cards are shown: either mixed with, after, or before all reviews." +msgstr "" + +#: src/settings.md:89 +msgid "Start of next day" +msgstr "" + +#: src/settings.md:90 +msgid "Controls when AnkiDroid should start showing the next day's cards. The default setting of 4AM ensures that if you're studying around midnight, you won't have two days worth of cards shown to you in one session. If you stay up very late or wake up very early, you may want to adjust this to a time you're usually sleeping." +msgstr "" + +#: src/settings.md:93 +msgid "Learn ahead limit" +msgstr "" + +#: src/settings.md:94 +msgid "The Learn ahead limit tells AnkiDroid how to behave when there is nothing left to study in the current deck but cards in learning. The default setting of 20 minutes tells AnkiDroid that cards should be shown early if they are due to be shown in less than 20 minutes and there's nothing else to do. If you set this to 0, Anki will always wait the full period, showing the congratulations screen until the remaining cards are ready to be reviewed." +msgstr "" + +#: src/settings.md:96 +msgid "Timebox limit" +msgstr "" + +#: src/settings.md:97 +msgid "Timeboxing is a technique to help you focus by dividing a longer activity (such as a 30 minute study session) into smaller blocks. If you set the timebox time limit to a non-zero number of minutes, AnkiDroid will periodically show a message saying you how many cards you've managed to study during the prescribed time limit." +msgstr "" + +#: src/settings.md:99 +msgid "Display" +msgstr "" + +#: src/settings.md:100 +msgid "This subsection relates to the way cards are displayed during reviewing" +msgstr "" + +#: src/settings.md:102 +msgid "Keep screen on" +msgstr "" + +#: src/settings.md:103 +msgid "Ignore the automatic screen timeout setting in Android to always keep the screen on." +msgstr "" + +#: src/settings.md:105 +msgid "Fullscreen mode" +msgstr "" + +#: src/settings.md:106 +msgid "Switches to an immersive fullscreen mode so that you can use more of the screen. You can choose between **Hide the system bars** which will hide the system status bar, action bar, and bottom navigation buttons. Alternatively you can choose **Hide the system bars and answer buttons**, which will hide everything except for the actual card content itself. You can temporarily exit fullscreen mode by swiping inwards (i.e. down or up) from the system bars." +msgstr "" + +#: src/settings.md:108 +msgid "_Note that immersive fullscreen mode is only supported on Android 4.4+_" +msgstr "" + +#: src/settings.md:110 +msgid "Center align" +msgstr "" + +#: src/settings.md:111 +msgid "By default AnkiDroid tries to show cards exactly as they are shown on Anki Desktop, however if you prefer your cards to be center aligned vertically in AnkiDroid then you can enable this feature." +msgstr "" + +#: src/settings.md:113 +msgid "Show button time" +msgstr "" + +#: src/settings.md:114 +msgid "By default, the answer buttons will display the time a card will next be shown. If you disable this option, the times will not appear, and only labels like **Again**, **Good** and **Easy** will be shown." +msgstr "" + +#: src/settings.md:116 +msgid "Card zoom" +msgstr "" + +#: src/settings.md:117 +msgid "Here you can increase the zoom level of the card content (excluding images). You can use this option if you want to increase the font size for all cards." +msgstr "" + +#: src/settings.md:119 +msgid "Image zoom" +msgstr "" + +#: src/settings.md:120 +msgid "Here you can increase the zoom level of any images embedded in your cards." +msgstr "" + +#: src/settings.md:122 +msgid "Answer button size" +msgstr "" + +#: src/settings.md:123 +msgid "If you find it difficult to press the answer button, you can use this setting to make it bigger." +msgstr "" + +#: src/settings.md:125 +msgid "Show remaining" +msgstr "" + +#: src/settings.md:126 +msgid "Disabling this allows you to hide the card count in the top left of the screen." +msgstr "" + +#: src/settings.md:128 +msgid "Whiteboard" +msgstr "" + +#: src/settings.md:129 +msgid "This subsection controls the whiteboard in the reviewer. Note: the whiteboard must be enabled in each deck individually from the menu in the study screen." +msgstr "" + +#: src/settings.md:132 +msgid "Stroke width" +msgstr "" + +#: src/settings.md:133 +msgid "Control the stroke width of the whiteboard. Reducing the stroke width may allow you to draw with more detail." +msgstr "" + +#: src/settings.md:135 +msgid "Black strokes" +msgstr "" + +#: src/settings.md:136 +msgid "Use black strokes instead of color, which may reduce memory usage. Note: this setting doesn't apply when night mode is enabled." +msgstr "" + +#: src/settings.md:138 +msgid "Automatic display answer" +msgstr "" + +#: src/settings.md:139 +msgid "The automatic display answer feature allows you to have the answer shown automatically after some timeout period. You can also have the next question shown automatically; in this case the card is assumed to be failed (i.e. the again button is automatically chosen)" +msgstr "" + +#: src/settings.md:141 +msgid "Time to show answer" +msgstr "" + +#: src/settings.md:142 +msgid "Time to wait until answer is automatically shown" +msgstr "" + +#: src/settings.md:144 +msgid "Time to show next question" +msgstr "" + +#: src/settings.md:145 +msgid "Time to wait until next question is automatically shown." +msgstr "" + +#: src/settings.md:147 +msgid "Fonts" +msgstr "" + +#: src/settings.md:148 +msgid "In this screen you can change the font used by AnkiDroid, and some scaling options related to fonts. See the [custom fonts](advanced-features/custom-fonts.md) section for more information about using custom fonts." +msgstr "" + +#: src/settings.md:151 +msgid "Default font" +msgstr "" + +#: src/settings.md:152 +msgid "Choose the default font used by the AnkiDroid reviewer. You can add fonts to this list by copying them to the **fonts** folder." +msgstr "" + +#: src/settings.md:154 +msgid "Default font applicability" +msgstr "" + +#: src/settings.md:155 +msgid "The default setting is to only use the default font when no font has been specified in the card styling via Anki Desktop, however you can also force the default font to be applied, ignoring any font specification in the card styling." +msgstr "" + +#: src/settings.md:157 +msgid "Browser and editor font" +msgstr "" + +#: src/settings.md:158 +msgid "The font to be used by the browser and editor" +msgstr "" + +#: src/settings.md:160 +msgid "Card browser font scaling" +msgstr "" + +#: src/settings.md:161 +msgid "Lets you change the font size used in the card browser." +msgstr "" + +#: src/gestures.md:3 +msgid "[Actions](#actions)" +msgstr "" + +#: src/gestures.md:4 +msgid "[No action](#no-action)" +msgstr "" + +#: src/gestures.md:5 +msgid "[Answer button 1](#answer-button-1)" +msgstr "" + +#: src/gestures.md:6 +msgid "[Answer button 2](#answer-button-2)" +msgstr "" + +#: src/gestures.md:7 +msgid "[Answer button 3](#answer-button-3)" +msgstr "" + +#: src/gestures.md:8 +msgid "[Answer button 4](#answer-button-4)" +msgstr "" + +#: src/gestures.md:9 +msgid "[Answer recommended (green)](#answer-recommended-green)" +msgstr "" + +#: src/gestures.md:10 +msgid "[Answer better than recommended](#answer-better-than-recommended)" +msgstr "" + +#: src/gestures.md:12 +msgid "[Edit card](#edit-card)" +msgstr "" + +#: src/gestures.md:13 +msgid "[Mark](#mark)" +msgstr "" + +#: src/gestures.md:14 +msgid "[Lookup expression](#lookup-expression)" +msgstr "" + +#: src/gestures.md:15 +msgid "[Bury card](#bury-card)" +msgstr "" + +#: src/gestures.md:16 +msgid "[Suspend card](#suspend-card)" +msgstr "" + +#: src/gestures.md:17 +msgid "[Delete note](#delete-note)" +msgstr "" + +#: src/gestures.md:18 +msgid "[Play media](#play-media)" +msgstr "" + +#: src/gestures.md:19 +msgid "[Abort learning](#abort-learning)" +msgstr "" + +#: src/gestures.md:20 +msgid "[Bury note](#bury-note)" +msgstr "" + +#: src/gestures.md:21 +msgid "[Suspend note](#suspend-note)" +msgstr "" + +#: src/gestures.md:22 +msgid "[Toggle Red Flag](#toggle-red-flag)" +msgstr "" + +#: src/gestures.md:23 +msgid "[Toggle Orange Flag](#toggle-orange-flag)" +msgstr "" + +#: src/gestures.md:24 +msgid "[Toggle Green Flag](#toggle-green-flag)" +msgstr "" + +#: src/gestures.md:25 +msgid "[Toggle Blue Flag](#toggle-blue-flag)" +msgstr "" + +#: src/gestures.md:26 +msgid "[Remove Flag](#remove-flag)" +msgstr "" + +#: src/gestures.md:27 +msgid "[Advanced](#advanced)" +msgstr "" + +#: src/gestures.md:28 +msgid "[Collection path](#collection-path)" +msgstr "" + +#: src/gestures.md:29 +msgid "[Force full sync](#force-full-sync)" +msgstr "" + +#: src/gestures.md:30 +msgid "[Advanced Statistics](#advanced-statistics)" +msgstr "" + +#: src/gestures.md:31 +msgid "[Workarounds](#workarounds)" +msgstr "" + +#: src/gestures.md:32 +msgid "[Type answer into the card](#type-answer-into-the-card)" +msgstr "" + +#: src/gestures.md:33 +msgid "[Input Workaround](#input-workaround)" +msgstr "" + +#: src/gestures.md:34 +msgid "[Longclick Workaround](#longclick-workaround)" +msgstr "" + +#: src/gestures.md:35 +msgid "[Fix for Hebrew Vowels](#fix-for-hebrew-vowels)" +msgstr "" + +#: src/gestures.md:36 +msgid "[Text to Speech](#text-to-speech)" +msgstr "" + +#: src/gestures.md:37 +msgid "[Lookup Dictionary](#lookup-dictionary)" +msgstr "" + +#: src/gestures.md:38 +msgid "[Reset Languages](#reset-languages)" +msgstr "" + +#: src/gestures.md:39 +msgid "[eReader (up/down buttons)](#ereader-updown-buttons)" +msgstr "" + +#: src/gestures.md:40 +msgid "[eReader Double Scrolling](#ereader-double-scrolling)" +msgstr "" + +#: src/gestures.md:42 +msgid "AnkiDroid allows you to customize the interface, so that actions you perform frequently can be accomplished quickly by using tap and swipe gestures." +msgstr "" + +#: src/gestures.md:45 +msgid "Actions" +msgstr "" + +#: src/gestures.md:46 +msgid "The following gestures can be used:" +msgstr "" + +#: src/gestures.md:48 +msgid "Swipe up" +msgstr "" + +#: src/gestures.md:49 +msgid "Swipe down" +msgstr "" + +#: src/gestures.md:50 +msgid "Swipe left" +msgstr "" + +#: src/gestures.md:51 +msgid "Swipe right" +msgstr "" + +#: src/gestures.md:52 +msgid "Double touch" +msgstr "" + +#: src/gestures.md:53 +msgid "Touch top" +msgstr "" + +#: src/gestures.md:54 +msgid "Touch bottom" +msgstr "" + +#: src/gestures.md:55 +msgid "Touch left" +msgstr "" + +#: src/gestures.md:56 +msgid "Tough right" +msgstr "" + +#: src/gestures.md:58 +msgid "The following actions are available for each gesture:" +msgstr "" + +#: src/gestures.md:60 +msgid "No action" +msgstr "" + +#: src/gestures.md:61 +msgid "Don't do anything. Useful if you want to disable certain swipes, tap zones and so on." +msgstr "" + +#: src/gestures.md:63 +msgid "Answer button 1" +msgstr "" + +#: src/gestures.md:64 +msgid "When the answer screen is shown, choose the red button, indicating you wish to review the card again soon. This is useful when you forgot a card or wish to review it more frequently. When the question is shown, this action (and all other answer actions below) will simply show the answer." +msgstr "" + +#: src/gestures.md:69 +msgid "Answer button 2" +msgstr "" + +#: src/gestures.md:70 +msgid "When the answer screen is shown, choose the second button from the left, generally indicating you found the card hard to remember." +msgstr "" + +#: src/gestures.md:73 +msgid "Answer button 3" +msgstr "" + +#: src/gestures.md:74 +msgid "When the answer screen is shown, choose the third button from the left." +msgstr "" + +#: src/gestures.md:76 +msgid "Answer button 4" +msgstr "" + +#: src/gestures.md:77 +msgid "When the answer screen is shown, choose the fourth button from the left (when applicable)." +msgstr "" + +#: src/gestures.md:79 +msgid "Answer recommended (green)" +msgstr "" + +#: src/gestures.md:80 +msgid "When the answer screen is shown, choose the green button. This is the button you should end up using the most." +msgstr "" + +#: src/gestures.md:83 +msgid "Answer better than recommended" +msgstr "" + +#: src/gestures.md:84 +msgid "When the answer screen is shown, choose the button on the right, indicating you found the card too easy to remember and would like a much longer delay." +msgstr "" + +#: src/gestures.md:89 +msgid "Undoes the last action." +msgstr "" + +#: src/gestures.md:91 +msgid "Edit card" +msgstr "" + +#: src/gestures.md:92 +msgid "Edits the current card." +msgstr "" + +#: src/gestures.md:94 +msgid "Mark" +msgstr "" + +#: src/gestures.md:95 +msgid "Adds a tag called **Marked** the current note, so it can be easily found in a search." +msgstr "" + +#: src/gestures.md:97 +msgid "Lookup expression" +msgstr "" + +#: src/gestures.md:98 +msgid "When the lookup feature is enabled (in advanced settings), lookup an expression in the selected dictionary. Note: the expression needs to be copied to the clipboard before this action will work." +msgstr "" + +#: src/gestures.md:101 +msgid "Bury card" +msgstr "" + +#: src/gestures.md:102 +msgid "Hides the current card from review." +msgstr "" + +#: src/gestures.md:104 +msgid "Suspend card" +msgstr "" + +#: src/gestures.md:105 +msgid "Prevent current card from being shown during review until you unsuspend it via the card browser." +msgstr "" + +#: src/gestures.md:108 +msgid "Deletes the currently shown note and all of its cards." +msgstr "" + +#: src/gestures.md:110 +msgid "Play media" +msgstr "" + +#: src/gestures.md:111 +msgid "Replay any audio on the card." +msgstr "" + +#: src/gestures.md:113 +msgid "Abort learning" +msgstr "" + +#: src/gestures.md:114 +msgid "Stop reviewing and go back to the deck overview page." +msgstr "" + +#: src/gestures.md:116 +msgid "Bury note" +msgstr "" + +#: src/gestures.md:117 +msgid "Bury the current note (i.e. hide it until the next day)." +msgstr "" + +#: src/gestures.md:119 +msgid "Suspend note" +msgstr "" + +#: src/gestures.md:120 +msgid "Suspend the current note (i.e. hide it until you unsuspend it)." +msgstr "" + +#: src/gestures.md:122 +msgid "Toggle Red Flag" +msgstr "" + +#: src/gestures.md:123 +msgid "Enables the red flag, unless the flag is already red, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:125 +msgid "Toggle Orange Flag" +msgstr "" + +#: src/gestures.md:126 +msgid "Enables the orange flag, unless the flag is already orange, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:128 +msgid "Toggle Green Flag" +msgstr "" + +#: src/gestures.md:129 +msgid "Enables the green flag, unless the flag is already green, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:131 +msgid "Toggle Blue Flag" +msgstr "" + +#: src/gestures.md:132 +msgid "Enables the blue flag, unless the flag is already blue, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:134 +msgid "Remove Flag" +msgstr "" + +#: src/gestures.md:135 +msgid "Removes the flag from the card." +msgstr "" + +#: src/gestures.md:137 +msgid "Advanced" +msgstr "" + +#: src/gestures.md:138 +msgid "Some less common features for advanced users are shown here" +msgstr "" + +#: src/gestures.md:140 +msgid "Collection path" +msgstr "" + +#: src/gestures.md:141 +msgid "Change the location where AnkiDroid's data is stored (not recommended)" +msgstr "" + +#: src/gestures.md:143 +msgid "Force full sync" +msgstr "" + +#: src/gestures.md:144 +msgid "Tap this item to force a full upload or download on the next sync (for example, because you accidentally deleted a deck on one side and want to restore the deck rather than having its deletion synchronized)." +msgstr "" + +#: src/gestures.md:147 +msgid "Take into account the effect of future reviews in the **Forecast** graph. More info [here](advanced-features/advanced-statistics.md)." +msgstr "" + +#: src/gestures.md:149 +msgid "Workarounds" +msgstr "" + +#: src/gestures.md:151 +msgid "Type answer into the card" +msgstr "" + +#: src/gestures.md:153 +msgid "If you have set up your cards to ask you to type in the answer (as explained in [this section of the desktop manual](https://docs.ankiweb.net/templates/intro.html)), AnkiDroid will display a keyboard on such cards and allow you to check your answer." +msgstr "" + +#: src/gestures.md:155 +msgid "In order to improve user experience when working with the whiteboard and gestures, we use a typing box separate from the card, which is inconsistent with the way the feature works on Anki Desktop." +msgstr "" + +#: src/gestures.md:157 +msgid "For full consistency with Anki Desktop, you can enable this option which allows you to save screen area, and choose an appropriate font (e.g. Japanese vs Chinese) for the input box." +msgstr "" + +#: src/gestures.md:159 +msgid "Input Workaround" +msgstr "" + +#: src/gestures.md:160 +msgid "Some older devices couldn't gain focus into the text input box for typed-answer fields, so this was added (Hidden for API > 14)." +msgstr "" + +#: src/gestures.md:162 +msgid "Longclick Workaround" +msgstr "" + +#: src/gestures.md:163 +msgid "Some older devices couldn't detect longclick for initiating selecting/copying of text, so this was added (Hidden for API > 10)." +msgstr "" + +#: src/gestures.md:165 +msgid "Fix for Hebrew Vowels" +msgstr "" + +#: src/gestures.md:166 +msgid "Some older devices couldn't render Hebrew text, so this feature was added which allows the user to download and install a Hebrew font which is known to work (Hidden for API > 15)." +msgstr "" + +#: src/gestures.md:168 +msgid "Text to Speech" +msgstr "" + +#: src/gestures.md:169 +msgid "Enable this option to have Android read out all the text on your flashcards using the default text to speech engine. Google's built-in TTS engine should work; 3rd party TTS engines may or may not. AnkiDroid will ask you to select the language for the front and back of your cards once for each deck on the first time you review a card in that deck. To change the language or disable TTS for a given deck after making your initial choice, you'll need to use the **reset languages** option described below and reconfigure for each deck." +msgstr "" + +#: src/gestures.md:173 +msgid "Alternatively, if you want only fragments of cards to be read aloud, or if you want to set the TTS language for multiple decks at once, you can insert `` tags into [card templates](advanced-features/customizing-card-layout.md). For example, with the following template for the back of the card" +msgstr "" + +#: src/gestures.md:178 +msgid "answer" +msgstr "" + +#: src/gestures.md:180 src/gestures.md:194 +msgid "\"android\"" +msgstr "" + +#: src/gestures.md:180 src/gestures.md:194 +msgid "\"en_GB\"" +msgstr "" + +#: src/gestures.md:185 +msgid "only the `EnglishTranslation` field will be read aloud in a British English voice; the `Example` field, lying outside the `` tag, won't be read aloud. Every `` tag needs to have the following two attributes:" +msgstr "" + +#: src/gestures.md:187 +msgid "**`service`**: should be set to **`android`**, otherwise the contents of the **``** tag won't be read aloud;" +msgstr "" + +#: src/gestures.md:188 +msgid "**`voice`**: used to select the TTS language; should be a [two- or three- letter language code](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes), optionally followed by an underscore and a [two-letter country or region code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). A frequently updated list of languages supported by the Google TTS engine can be found on its [Wikipedia page](https://en.wikipedia.org/wiki/Google_Text-to-Speech)." +msgstr "" + +#: src/gestures.md:190 +msgid "To make both AnkiDroid and the [AwesomeTTS](https://ankiatts.appspot.com) plugin to the desktop application use a TTS engine to read aloud certain card fragments, put the `` tag inside the `` tag recognised by AwesomeTTS, or vice versa. An example:" +msgstr "" + +#: src/gestures.md:193 +msgid "\"sapi5js\"" +msgstr "" + +#: src/gestures.md:193 +msgid "\"39\"" +msgstr "" + +#: src/gestures.md:193 src/gestures.md:193 +msgid "\"0\"" +msgstr "" + +#: src/gestures.md:193 +msgid "\"Microsoft David Desktop\"" +msgstr "" + +#: src/gestures.md:193 +msgid "\"100\"" +msgstr "" + +#: src/gestures.md:200 +msgid "AnkiDroid automatically ignores `` tags selecting an unknown TTS service. In contrast, AwesomeTTS may display a warning message on encountering the `` tag; to suppress it, uncheck the two _Show errors_ checkboxes on the _Playback_ tab of the _AwesomeTTS: Configuration_ dialog in the desktop application." +msgstr "" + +#: src/gestures.md:202 +msgid "_This feature may be removed in the future in favor of a separately downloadable plugin._" +msgstr "" + +#: src/gestures.md:204 +msgid "Lookup Dictionary" +msgstr "" + +#: src/gestures.md:205 +msgid "Dictionary to use to lookup words copied to the clipboard in the reviewer. After setting up a dictionary, do the following to perform the lookup:" +msgstr "" + +#: src/gestures.md:207 +msgid "Longclick on the text you want to copy in the reviewer" +msgstr "" + +#: src/gestures.md:208 +msgid "After selecting the word you want to copy, press the **copy** icon in the app bar at the top of the screen" +msgstr "" + +#: src/gestures.md:209 +msgid "Tap once anywhere on the flashcard" +msgstr "" + +#: src/gestures.md:210 +msgid "A magnifying glass icon should appear, which performs the lookup when clicked" +msgstr "" + +#: src/gestures.md:212 +msgid "Alternatively, the lookup action can be performed via a gesture." +msgstr "" + +#: src/gestures.md:214 src/gestures.md:222 +msgid "_This feature will likely be removed in the future in favor of a plugin_" +msgstr "" + +#: src/gestures.md:216 +msgid "Reset Languages" +msgstr "" + +#: src/gestures.md:217 +msgid "Useful for resetting the TTS language" +msgstr "" + +#: src/gestures.md:219 +msgid "eReader (up/down buttons)" +msgstr "" + +#: src/gestures.md:220 +msgid "Support for eReader hardware buttons (see [issue 1625](https://github.com/ankidroid/Anki-Android/issues/1625))" +msgstr "" + +#: src/gestures.md:224 +msgid "eReader Double Scrolling" +msgstr "" + +#: src/gestures.md:225 +msgid "Double the scrolling distance when using the eReader hardware buttons" +msgstr "" + +#: src/note-formatting-toolbar.md:3 +msgid "The note formatting toolbar contains basic text formatting buttons (Bold, Italic, Underline, Horizontal Line, Insert Title, Change Font Size, [Insert MathJax](advanced-features/mathjax.md) and Insert Cloze Deletion)." +msgstr "" + +#: src/note-formatting-toolbar.md:5 +msgid "It also allows the addition of user-defined toolbar buttons using HTML. HTML is a powerful language allowing nearly endless customization of your cards. [Our wiki](https://github.com/ankidroid/Anki-Android/wiki/Note-Editor-Toolbar-HTML-Samples) contains common code samples to get you started." +msgstr "" + +#: src/note-formatting-toolbar.md:7 +msgid "A user-defined toolbar button can be removed by long pressing the button and selecting **Delete**." +msgstr "" + +#: src/keyboard-shortcuts.md:3 +msgid "Home Screen" +msgstr "" + +#: src/keyboard-shortcuts.md:5 src/keyboard-shortcuts.md:13 +#: src/keyboard-shortcuts.md:32 src/keyboard-shortcuts.md:53 +#: src/keyboard-shortcuts.md:64 +msgid "Shortcut" +msgstr "" + +#: src/keyboard-shortcuts.md:5 src/keyboard-shortcuts.md:13 +#: src/keyboard-shortcuts.md:32 src/keyboard-shortcuts.md:53 +#: src/keyboard-shortcuts.md:64 +msgid "Purpose" +msgstr "" + +#: src/keyboard-shortcuts.md:7 src/keyboard-shortcuts.md:55 +msgid "A" +msgstr "" + +#: src/keyboard-shortcuts.md:7 +msgid "Add Note" +msgstr "" + +#: src/keyboard-shortcuts.md:8 src/keyboard-shortcuts.md:40 +msgid "B" +msgstr "" + +#: src/keyboard-shortcuts.md:9 +msgid "Y" +msgstr "" + +#: src/keyboard-shortcuts.md:9 +msgid "Sync" +msgstr "" + +#: src/keyboard-shortcuts.md:11 +msgid "Reviewer" +msgstr "" + +#: src/keyboard-shortcuts.md:15 src/keyboard-shortcuts.md:49 +msgid "1" +msgstr "" + +#: src/keyboard-shortcuts.md:15 src/keyboard-shortcuts.md:15 +#: src/keyboard-shortcuts.md:15 src/keyboard-shortcuts.md:20 +#: src/keyboard-shortcuts.md:27 +msgid "," +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "2" +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "3" +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "4" +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "Press the nth answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:16 +msgid "Gamepad Y" +msgstr "" + +#: src/keyboard-shortcuts.md:16 +msgid "Flip Card/Press the first answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:17 +msgid "Gamepad X" +msgstr "" + +#: src/keyboard-shortcuts.md:17 +msgid "Flip Card/Press the second answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:18 +msgid "Gamepad B" +msgstr "" + +#: src/keyboard-shortcuts.md:18 +msgid "Flip Card/Press the third answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:19 +msgid "Gamepad A" +msgstr "" + +#: src/keyboard-shortcuts.md:19 +msgid "Flip Card/Press the fourth answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:20 +msgid "Space" +msgstr "" + +#: src/keyboard-shortcuts.md:20 src/keyboard-shortcuts.md:34 +msgid "Enter" +msgstr "" + +#: src/keyboard-shortcuts.md:20 +msgid "Flip Card/Answer Good" +msgstr "" + +#: src/keyboard-shortcuts.md:21 +msgid "e" +msgstr "" + +#: src/keyboard-shortcuts.md:21 src/keyboard-shortcuts.md:56 +msgid "Edit Note" +msgstr "" + +#: src/keyboard-shortcuts.md:22 +msgid "\\*" +msgstr "" + +#: src/keyboard-shortcuts.md:22 src/keyboard-shortcuts.md:58 +msgid "Mark Note" +msgstr "" + +#: src/keyboard-shortcuts.md:23 +msgid "\\-" +msgstr "" + +#: src/keyboard-shortcuts.md:23 +msgid "Bury Card" +msgstr "" + +#: src/keyboard-shortcuts.md:24 +msgid "=" +msgstr "" + +#: src/keyboard-shortcuts.md:24 +msgid "Bury Note" +msgstr "" + +#: src/keyboard-shortcuts.md:25 +msgid "@" +msgstr "" + +#: src/keyboard-shortcuts.md:25 +msgid "Suspend Card" +msgstr "" + +#: src/keyboard-shortcuts.md:26 +msgid "!" +msgstr "" + +#: src/keyboard-shortcuts.md:26 +msgid "Suspend Note" +msgstr "" + +#: src/keyboard-shortcuts.md:27 +msgid "r" +msgstr "" + +#: src/keyboard-shortcuts.md:27 +msgid "F5" +msgstr "" + +#: src/keyboard-shortcuts.md:27 +msgid "Replay Media" +msgstr "" + +#: src/keyboard-shortcuts.md:28 +msgid "z" +msgstr "" + +#: src/keyboard-shortcuts.md:30 +msgid "Note Editor" +msgstr "" + +#: src/keyboard-shortcuts.md:34 src/keyboard-shortcuts.md:39 +#: src/keyboard-shortcuts.md:40 src/keyboard-shortcuts.md:41 +#: src/keyboard-shortcuts.md:42 src/keyboard-shortcuts.md:43 +#: src/keyboard-shortcuts.md:44 src/keyboard-shortcuts.md:45 +#: src/keyboard-shortcuts.md:46 src/keyboard-shortcuts.md:47 +#: src/keyboard-shortcuts.md:48 src/keyboard-shortcuts.md:49 +#: src/keyboard-shortcuts.md:55 src/keyboard-shortcuts.md:56 +#: src/keyboard-shortcuts.md:57 src/keyboard-shortcuts.md:58 +#: src/keyboard-shortcuts.md:59 src/keyboard-shortcuts.md:66 +msgid "Ctrl" +msgstr "" + +#: src/keyboard-shortcuts.md:34 src/keyboard-shortcuts.md:39 +#: src/keyboard-shortcuts.md:40 src/keyboard-shortcuts.md:41 +#: src/keyboard-shortcuts.md:42 src/keyboard-shortcuts.md:43 +#: src/keyboard-shortcuts.md:44 src/keyboard-shortcuts.md:45 +#: src/keyboard-shortcuts.md:46 src/keyboard-shortcuts.md:47 +#: src/keyboard-shortcuts.md:47 src/keyboard-shortcuts.md:48 +#: src/keyboard-shortcuts.md:48 src/keyboard-shortcuts.md:48 +#: src/keyboard-shortcuts.md:49 src/keyboard-shortcuts.md:55 +#: src/keyboard-shortcuts.md:56 src/keyboard-shortcuts.md:57 +#: src/keyboard-shortcuts.md:58 src/keyboard-shortcuts.md:59 +#: src/keyboard-shortcuts.md:59 src/keyboard-shortcuts.md:66 +msgid "+" +msgstr "" + +#: src/keyboard-shortcuts.md:34 +msgid "Save Note" +msgstr "" + +#: src/keyboard-shortcuts.md:35 src/keyboard-shortcuts.md:57 +msgid "D" +msgstr "" + +#: src/keyboard-shortcuts.md:35 +msgid "Select Deck" +msgstr "" + +#: src/keyboard-shortcuts.md:36 +msgid "L" +msgstr "" + +#: src/keyboard-shortcuts.md:36 src/keyboard-shortcuts.md:62 +msgid "Card Template Editor" +msgstr "" + +#: src/keyboard-shortcuts.md:37 +msgid "N" +msgstr "" + +#: src/keyboard-shortcuts.md:37 +msgid "Select Note Type" +msgstr "" + +#: src/keyboard-shortcuts.md:38 +msgid "T" +msgstr "" + +#: src/keyboard-shortcuts.md:38 +msgid "Edit Tags" +msgstr "" + +#: src/keyboard-shortcuts.md:39 src/keyboard-shortcuts.md:66 +msgid "P" +msgstr "" + +#: src/keyboard-shortcuts.md:39 +msgid "Preview Note" +msgstr "" + +#: src/keyboard-shortcuts.md:40 +msgid "Bold" +msgstr "" + +#: src/keyboard-shortcuts.md:41 +msgid "I" +msgstr "" + +#: src/keyboard-shortcuts.md:41 +msgid "Italic" +msgstr "" + +#: src/keyboard-shortcuts.md:42 +msgid "U" +msgstr "" + +#: src/keyboard-shortcuts.md:42 +msgid "Underline" +msgstr "" + +#: src/keyboard-shortcuts.md:43 src/keyboard-shortcuts.md:59 +msgid "R" +msgstr "" + +#: src/keyboard-shortcuts.md:43 +msgid "Insert Horizontal Rule" +msgstr "" + +#: src/keyboard-shortcuts.md:44 +msgid "H" +msgstr "" + +#: src/keyboard-shortcuts.md:44 +msgid "Insert Title" +msgstr "" + +#: src/keyboard-shortcuts.md:45 +msgid "F" +msgstr "" + +#: src/keyboard-shortcuts.md:45 +msgid "Change Font Size" +msgstr "" + +#: src/keyboard-shortcuts.md:46 +msgid "M" +msgstr "" + +#: src/keyboard-shortcuts.md:46 +msgid "Insert MathJax Equation" +msgstr "" + +#: src/keyboard-shortcuts.md:47 src/keyboard-shortcuts.md:48 +msgid "Shift" +msgstr "" + +#: src/keyboard-shortcuts.md:47 src/keyboard-shortcuts.md:48 +msgid "C" +msgstr "" + +#: src/keyboard-shortcuts.md:47 +msgid "Insert New Cloze Deletion" +msgstr "" + +#: src/keyboard-shortcuts.md:48 src/keyboard-shortcuts.md:59 +msgid "Alt" +msgstr "" + +#: src/keyboard-shortcuts.md:48 +msgid "Insert Cloze Deletion using existing number" +msgstr "" + +#: src/keyboard-shortcuts.md:49 +msgid ".." +msgstr "" + +#: src/keyboard-shortcuts.md:49 +msgid "0" +msgstr "" + +#: src/keyboard-shortcuts.md:49 +msgid "Insert User-Defined HTML" +msgstr "" + +#: src/keyboard-shortcuts.md:55 +msgid "Select All" +msgstr "" + +#: src/keyboard-shortcuts.md:56 +msgid "E" +msgstr "" + +#: src/keyboard-shortcuts.md:57 +msgid "Change Deck" +msgstr "" + +#: src/keyboard-shortcuts.md:58 +msgid "K" +msgstr "" + +#: src/keyboard-shortcuts.md:66 +msgid "Preview Changed" +msgstr "" + +#: src/rtl.md:3 +msgid "Anki and AnkiDroid have full support for RTL languages such as Arabic, Hebrew, and Persian." +msgstr "" + +#: src/rtl.md:5 +msgid "Editing Fields as RTL" +msgstr "" + +#: src/rtl.md:6 +msgid "Fields can be marked as RTL (currently possible only from Anki Desktop) for RTL editing. When a field is marked as RTL, then the text is right-aligned in editing fields and punctuation is correctly displayed at the end (left) of sentences. Text that contains blocks of LTR characters will be properly displayed as well, with the beginning of the sentence appearing to the right of the LTR block and the end of the sentence being displayed to the left of the LTR block." +msgstr "" + +#: src/rtl.md:8 +msgid "Directionality is especially important for editing and creating RTL cloze deletions as the cloze format includes both neutral and LTR markup characters. Therefore it is recommended to use a separate note type for LTR cloze deletions and RTL cloze deletions." +msgstr "" + +#: src/rtl.md:10 +msgid "Displaying Fields as RTL during study" +msgstr "" + +#: src/rtl.md:11 +msgid "To display a field as RTL, with proper right-alignment and directionality (punctuation at left of sentences, proper flow around LTR blocks), the field should be wrapped in a div or span element with the RTL directionality specified:" +msgstr "" + +#: src/rtl.md:14 +msgid "\"rtl\"" +msgstr "" + +#: src/anki-desktop.md:3 +msgid "[Via Cloud Sync](#via-cloud-sync)" +msgstr "" + +#: src/anki-desktop.md:4 +msgid "[Sync existing decks into a new AnkiDroid install](#sync-existing-decks-into-a-new-ankidroid-install)" +msgstr "" + +#: src/anki-desktop.md:5 +msgid "[Sync from AnkiDroid to Computer](#sync-from-ankidroid-to-computer)" +msgstr "" + +#: src/anki-desktop.md:7 +msgid "Anki has a free cloud synchronization service called AnkiWeb that makes it easy to keep your card decks in sync between mobile devices and your computer. If you cannot use sync for some reason, it's also possible to use USB, though this method is more laborious." +msgstr "" + +#: src/anki-desktop.md:9 +msgid "Note that AnkiDroid is not affiliated with Anki Desktop or AnkiWeb. AnkiDroid is based on Anki Desktop but it is developed by an entirely separate community of volunteers." +msgstr "" + +#: src/anki-desktop.md:11 +msgid "![AnkiDesktop.png](img/AnkiDesktop.png)" +msgstr "" + +#: src/anki-desktop.md:13 +msgid "Via Cloud Sync" +msgstr "" + +#: src/anki-desktop.md:14 +msgid "Before you can use AnkiWeb, you'll first need to create an account by visiting [https://ankiweb.net](https://ankiweb.net) and clicking the **Sign Up** button. If you have used AnkiWeb in the past, you can skip this step. After signing up, see the corresponding instructions below, depending on whether you are trying to get your existing decks into AnkiDroid or out of AnkiDroid." +msgstr "" + +#: src/anki-desktop.md:16 +msgid "Sync existing decks into a new AnkiDroid install" +msgstr "" + +#: src/anki-desktop.md:17 +msgid "In this scenario you have some existing Anki decks that you want to copy into a new install of AnkiDroid by syncing with AnkiWeb. Open the Anki client with your existing decks (usually this would be Anki desktop, but it could also mean a version of AnkiDroid you have been using on another device), and click the synchronization button (which has two arrows in a circle) at the top right of the deck list." +msgstr "" + +#: src/anki-desktop.md:19 +msgid "If you have never used AnkiWeb before you will need to enter your credentials if prompted, and then press the **Upload to AnkiWeb** button to confirm overwriting the empty collection on AnkiWeb with your existing decks in Anki. Anki will upload all your cards, images and audio to AnkiWeb. If you have a lot of media, this may take some time." +msgstr "" + +#: src/anki-desktop.md:21 +msgid "Once the synchronization has completed, open AnkiDroid in the device that you are trying to copy the existing decks into, and tap the **Sync** button in the app bar at the top of the main [deck list](deck-picker.md). After entering your AnkiWeb credentials, AnkiDroid will download all your cards and media, and remember your login information for next time." +msgstr "" + +#: src/anki-desktop.md:24 +msgid "Note that if you have any existing material in AnkiDroid before attempting to sync, you may be shown a message asking you to choose to either download from AnkiWeb, or upload to AnkiWeb. If you are happy to lose the cards in AnkiDroid then simply choose **Download**. If you need to merge the existing cards with AnkiDroid then you should see the [resolving conflicts](ankiweb-conflicts.md#dealing-with-merge-conflicts-on-ankiweb) section before continuing." +msgstr "" + +#: src/anki-desktop.md:26 +msgid "After the first synchronization has completed, you can click the sync button again any time you wish to synchronize your changes to the cloud. Only changes made since the previous sync will be sent, so subsequent syncs are a lot faster." +msgstr "" + +#: src/anki-desktop.md:28 +msgid "If you add some new cards on the desktop computer and want to sync them to AnkiDroid, you'd repeat the same basic process: sync on desktop (or close the program, as it syncs automatically on close by default), and then tap the sync button on AnkiDroid." +msgstr "" + +#: src/anki-desktop.md:30 +msgid "Sync from AnkiDroid to Computer" +msgstr "" + +#: src/anki-desktop.md:31 +msgid "The process of syncing from AnkiDroid to computer is essentially the same as syncing from computer to AnkiDroid, but in reverse." +msgstr "" + +#: src/anki-desktop.md:33 +msgid "From the [deck list](deck-picker.md), tap the sync button in the top right (it has two arrows in a circle). If it's your first time using AnkiWeb, you may need to enter your login credentials, and then press the \"upload\" button to upload your AnkiDroid collection to AnkiWeb." +msgstr "" + +#: src/anki-desktop.md:35 +msgid "Once the synchronization has completed, open Anki Desktop on your computer and press the sync button there (with two arrows in a circle), and Anki will download your collection." +msgstr "" + +#: src/ankiweb-conflicts.md:2 +msgid "Although it should not happen often, occasionally you may end up in the position where your cards on AnkiDroid can not be automatically merged with the cards on AnkiWeb. In this case it's necessary to choose to either upload to or download from AnkiWeb, which would overwrite any changes on the other side. " +msgstr "" + +#: src/ankiweb-conflicts.md:4 +msgid "If you have new cards on both sides which you want to keep, before syncing you can [export a deck package](exporting.md) for each deck containing new cards from AnkiDroid, then when you do the sync choose **download** to download from AnkiWeb. After the synchronization has completed, you can import the decks you previously exported from AnkiDroid, as per the [importing section](importing/importing-anki-files.md)." +msgstr "" + +#: src/ankiweb-conflicts.md:6 +msgid "Via USB" +msgstr "" + +#: src/ankiweb-conflicts.md:8 +msgid "If you don't have regular internet access, it's still possible to copy decks back and forth to your device, by using USB." +msgstr "" + +#: src/ankiweb-conflicts.md:10 +msgid "The USB method works by importing or exporting all your decks at once. This means that unlike syncing via AnkiWeb, you can't make changes from two locations at once and then merge them. Instead, if you wish to add cards on the desktop, you need to make sure you export the latest version of your collection from your mobile device first, or you'll end up losing any reviews done on the mobile device." +msgstr "" + +#: src/ankiweb-conflicts.md:12 +msgid "Thus the workflow you would typically use is to export your collection from your mobile device and import it into the desktop, make modifications on the desktop, and then export your collection and import it back into your mobile device." +msgstr "" + +#: src/ankiweb-conflicts.md:14 +msgid "AnkiDroid can't directly import text files. If you wish to do that, you'll need to do that with the desktop program, and then import your collection into AnkiDroid." +msgstr "" + +#: src/ankiweb-conflicts.md:16 +msgid "Copy all decks from Anki Desktop to AnkiDroid via USB" +msgstr "" + +#: src/ankiweb-conflicts.md:18 +msgid "On your computer:" +msgstr "" + +#: src/ankiweb-conflicts.md:19 +msgid "Open the desktop program." +msgstr "" + +#: src/ankiweb-conflicts.md:20 +msgid "Choose File>Export from the menu." +msgstr "" + +#: src/ankiweb-conflicts.md:21 +msgid "Click the **Export...** button. Make sure to leave **all decks** selected, as it's not possible to import individual decks into AnkiDroid. **Include scheduling information** must also remain checked." +msgstr "" + +#: src/ankiweb-conflicts.md:22 +msgid "Anki will automatically create a collection.apkg on your desktop. If the file is named something else, please see the previous step again." +msgstr "" + +#: src/ankiweb-conflicts.md:23 +msgid "Connect your Android device to your computer via the USB cable." +msgstr "" + +#: src/ankiweb-conflicts.md:24 +msgid "Open the file explorer on your computer and view the contents of your Android device." +msgstr "" + +#: src/ankiweb-conflicts.md:25 +msgid "Locate the AnkiDroid folder." +msgstr "" + +#: src/ankiweb-conflicts.md:26 +msgid "Drag the collection.apkg file from your desktop into this AnkiDroid folder." +msgstr "" + +#: src/ankiweb-conflicts.md:28 +msgid "Then in AnkiDroid:" +msgstr "" + +#: src/ankiweb-conflicts.md:29 +msgid "From the main decks screen, tap **Import file** from the menu" +msgstr "" + +#: src/ankiweb-conflicts.md:30 +msgid "Tap on **Collection** and then confirm" +msgstr "" + +#: src/ankiweb-conflicts.md:32 +msgid "Once complete, the decks on your device will have been replaced with the decks from your desktop. See the section on [importing apkg files](importing/importing-anki-files.md) for more help with importing." +msgstr "" + +#: src/ankiweb-conflicts.md:35 +msgid "Copy all decks from AnkiDroid to Anki Desktop via USB" +msgstr "" + +#: src/ankiweb-conflicts.md:37 +msgid "The process to copy your decks from AnkiDroid to Anki Desktop is essentially the same as above, but in reverse." +msgstr "" + +#: src/ankiweb-conflicts.md:38 +msgid "Start with your device disconnected from USB" +msgstr "" + +#: src/ankiweb-conflicts.md:39 +msgid "Choose **Export collection** from the main menu in the Deck Screen" +msgstr "" + +#: src/ankiweb-conflicts.md:40 +msgid "Ensure **Include scheduling information** remains checked and press **OK**" +msgstr "" + +#: src/ankiweb-conflicts.md:41 +msgid "Connect device to computer using USB" +msgstr "" + +#: src/ankiweb-conflicts.md:42 +msgid "Copy the **collection.apkg** from the path specified in the message to the desktop on your computer" +msgstr "" + +#: src/ankiweb-conflicts.md:43 +msgid "Double click on the file to import into Anki Desktop" +msgstr "" + +#: src/ankiweb-conflicts.md:45 +msgid "See the [exporting section](exporting.md) below for more detailed information on exporting from AnkiDroid." +msgstr "" + +#: src/advanced-features/intro.md:3 +msgid "[MathJax Support](mathjax.md)" +msgstr "" + +#: src/advanced-features/intro.md:4 +msgid "[Reverse Cards](reverse-cards.md)" +msgstr "" + +#: src/advanced-features/intro.md:5 +msgid "[Custom Fonts](custom-fonts.md)" +msgstr "" + +#: src/advanced-features/intro.md:6 +msgid "[Custom Card Layout](customizing-card-layout.md)" +msgstr "" + +#: src/advanced-features/intro.md:7 +msgid "[Type in the answer feature](type-in-answer.md)" +msgstr "" + +#: src/advanced-features/intro.md:8 +msgid "[Advanced Statistics](advanced-statistics.md)" +msgstr "" + +#: src/advanced-features/intro.md:9 +msgid "[Reminders](reminders.md)" +msgstr "" + +#: src/advanced-features/intro.md:10 +msgid "[Automatic Language Selection](set-language-hint.md)" +msgstr "" + +#: src/advanced-features/mathjax.md:2 +msgid "Mathjax is a modern typesetting library for math and chemistry. AnkiDroid supports Mathjax cards out of the box. Mathjax is configured to expect TeX formatting, with `\\(` and `\\)` delimiting inline equations and `\\[` and `\\]` for display equations." +msgstr "" + +#: src/advanced-features/mathjax.md:4 +msgid "To try it out, enter the following into a field:" +msgstr "" + +#: src/advanced-features/mathjax.md:10 +msgid "and preview the card." +msgstr "" + +#: src/advanced-features/mathjax.md:12 +msgid "For more details, see [Mathjax Support](https://docs.ankiweb.net/math.html#mathjax) in the Anki Manual." +msgstr "" + +#: src/advanced-features/mathjax.md:14 +msgid "[Previous workarounds](https://www.reddit.com/r/Anki/comments/ar7lxd/how_to_load_mathjax_color_extension_on_anki/egm6u5j) are no longer necessary as of AnkiDroid 2.9." +msgstr "" + +#: src/advanced-features/reverse-cards.md:3 +msgid "The Anki system has [built-in note types which allow you to review cards in both directions](https://docs.ankiweb.net/getting-started.html#note-types). When [creating new material](../adding-notes.md) in AnkiDroid, you should choose one of these note types, such as **Basic (and reversed card)**, which will automatically generate a reverse card for you." +msgstr "" + +#: src/advanced-features/reverse-cards.md:6 +msgid "![ReverseNoteType](../img/ReverseNoteType.png)" +msgstr "" + +#: src/advanced-features/reverse-cards.md:8 +msgid "If you used the wrong note type when adding your material, you can change the note type via the [edit note screen](../editing-notes.md), or you can change the note type for multiple cards at once using the browser in Anki Desktop. To do this, follow the instructions in the [syncing with Anki Desktop section](../anki-desktop.md), then in Anki Desktop open the browser, select the cards you want to change, then choose **Change note type** from the menu." +msgstr "" + +#: src/advanced-features/reverse-cards.md:11 +msgid "Alternatively, if your cards are using a custom card layout which doesn't include a reverse card, you can edit the note type to include a reverse card by following the instructions in the [reverse cards section](https://docs.ankiweb.net/templates/generation.html#reverse-cards) of the Anki Desktop user manual. While less convenient than using Anki Desktop, it is possible to edit the note type from directly within AnkiDroid as well; see the [custom card layout section](../advanced-features/customizing-card-layout.md) for more on this." +msgstr "" + +#: src/advanced-features/custom-fonts.md:3 +msgid "AnkiDroid allows you to use non-system fonts on your cards. To set them up properly, it is strongly recommended to use the official method that is used by Anki Desktop. Please see [the corresponding section in the desktop manual](https://docs.ankiweb.net/templates/styling.html#installing-fonts) for more information." +msgstr "" + +#: src/advanced-features/custom-fonts.md:5 +msgid "Alternatively, you can create a new subfolder **fonts** in the main AnkiDroid directory (i.e. the folder which contains the **backups** subfolder, specified under `Settings > Advanced > AnkiDroid directory)`, copy a compatible font file (i.e. .ttf) there, and then set this as the default font under `Settings > Fonts > Default font`. " +msgstr "" + +#: src/advanced-features/custom-fonts.md:7 +msgid "**Note:** this method will change the default font for **all** of your cards, whereas the official method can be more specific. Also, if you sync with AnkiWeb, using this method will lead to cards being displayed differently on different devices." +msgstr "" + +#: src/advanced-features/custom-fonts.md:9 +msgid "Only fonts in the ttf format are officially supported in Anki/AnkiDroid; the [Google Noto](https://fonts.google.com/noto) font set is highly recommended for all languages, and some other free fonts can be found [here](https://github.com/ankidroid/Anki-Android/wiki/Freely-distributable-fonts)." +msgstr "" + +#: src/advanced-features/custom-fonts.md:11 +msgid "Please note that AnkiDroid has to load the entire font into memory in order to use it, and fonts for Asian languages can be quite large. If you have an older device and notice AnkiDroid crashing frequently after installing a font, you may have exceeded your device's memory limits. For Google Noto, it's not recommended to use the combined CJK font, rather get the individual languages [separately from here](https://github.com/googlei18n/noto-cjk)." +msgstr "" + +#: src/advanced-features/custom-fonts.md:13 +msgid "**Note 1**: If you have **Fetch media on sync** disabled, you may need to manually copy the font file from Anki Desktop to your AnkiDroid/collection.media folder." +msgstr "" + +#: src/advanced-features/custom-fonts.md:15 +msgid "**Note 2**: If you can't get your font to work after following the steps in here and the Anki Desktop manual, please refer to the FAQ for " +msgstr "" + +#: src/advanced-features/custom-fonts.md:15 +msgid "detailed steps on how to debug font issues" +msgstr "" + +#: src/advanced-features/customizing-card-layout.md:2 +msgid "The layout of flashcards is completely customizable, although this is an advanced topic with a fairly steep learning curve, and you will probably find it a lot more convenient to do the customization with [Anki Desktop](../anki-desktop.md). " +msgstr "" + +#: src/advanced-features/customizing-card-layout.md:4 +msgid "The [card templates section](https://docs.ankiweb.net/templates/intro.html) of the Anki Desktop manual has detailed instructions on how to edit note types, and most of the actions discussed there are also available from AnkiDroid by tapping **cards** at the bottom of the note editor, or choosing the **manage note types** option in the deck picker. Since detailed information on customizing card layouts is available in the Anki desktop manual, it will not be repeated here." +msgstr "" + +#: src/advanced-features/customizing-card-layout.md:6 +msgid "There is an [advanced formatting page](https://github.com/ankidroid/Anki-Android/wiki/Advanced-formatting) on the AnkiDroid wiki with various hints on how you can get the most out of your card formatting, and we encourage you to read it, and edit it freely if you have any tips that you'd like to share with the community." +msgstr "" + +#: src/advanced-features/type-in-answer.md:3 +msgid "AnkiDroid allows you to type in the correct answer and then compare it to the right answer. You have to set this up with Anki desktop, as described in the [Anki Desktop manual](https://docs.ankiweb.net/templates/fields.html#checking-your-answer)." +msgstr "" + +#: src/advanced-features/type-in-answer.md:5 +msgid "Anki desktop replaces the **{{type:NN}}** field on the front of a card with an input box in the card. On AnkiDroid it is replaced with a **......** prompt instead, and a text input box is shown at the bottom. The comparison between typed text and the correct text is shown on the answer side in place of the **{{type:NN}}** field there, like on Anki desktop." +msgstr "" + +#: src/advanced-features/type-in-answer.md:7 +msgid "The text input box and the soft keyboard can be hidden by ticking **Disable typing in answer** in the preferences." +msgstr "" + +#: src/advanced-features/type-in-answer.md:9 +msgid "Even with typing disabled, the correct answer is shown on the answer side. This is done on purpose; otherwise the correct answer might not be shown at all." +msgstr "" + +#: src/advanced-features/type-in-answer.md:11 +msgid "To hide the comparison (e.g. because the correct answer is shown anyway), the HTML id **typeans** can be used. Add following to the [card styling](https://docs.ankiweb.net/templates/styling.html#card-styling) using Anki Desktop." +msgstr "" + +#: src/advanced-features/type-in-answer.md:19 +msgid "The type answer prompt and the comparison have more classes that can be used to change the way they are displayed. Some of these are the same as on Anki Desktop, some are specific to AnkiDroid." +msgstr "" + +#: src/advanced-features/type-in-answer.md:21 +msgid "The comparison uses three classes, typeGood, typeBad and typeMissed to add green, red and gray background to the typing comparison. These three classes are used on Anki desktop as well." +msgstr "" + +#: src/advanced-features/type-in-answer.md:23 +msgid "The **......** prompt has the class **typePrompt**." +msgstr "" + +#: src/advanced-features/type-in-answer.md:25 +msgid "When typing is set to off in the preferences, the class **typeOff** is added to the prompt on the question side, and to the div element containing the comparison on the answer side. This class can be used to show the type prompt or to hide the typing comparison in this case." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:3 +msgid "If Advanced Statistics are enabled, it changes the **Forecast** graph so that it shows the estimated number of reviews that will be due on a given day in the future taking into account future reviews, learning new cards and failing cards. The bars and the left axis show the number of cards due on each day if you study all cards each day, while the line and the right axis show the number of unseen (shown as **learn**), young and mature cards your deck or collection will consist of if you study all cards each day. The forecast graph does count reviews that are currently overdue. It assumes that the overdue cards will be reviewed according to the **maximum reviews/day** deck option." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:5 +msgid "Advanced Statistics can be enabled in `Settings -> Advanced -> Advanced Statistics` (in plugin section)." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:7 +msgid "The outcome of future reviewing, learning or failing cards affects reviews after that future review. To take this into account, the probability of each outcome is computed from the review log. Then the outcome is randomly chosen, such that an outcome which is more likely according to the review log is more likely to be chosen than an outcome which is less likely according to the review log. The settings all affect how the effect of the outcome of future reviews on subsequent reviews is taken into account." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:9 +msgid "Compute first n days, simulate remainder" +msgstr "" + +#: src/advanced-features/advanced-statistics.md:10 +msgid "If this setting is set to a number greater than 0, instead of randomly choosing an outcome, each possible outcome is taken into account in the simulation, together with its probability. The probability is taken into account for the graph and for future reviews in which it results, which also affect the graph. One review has a couple of possible outcomes (say 4), which all result in a review. That review also has a couple of possible outcomes and so on. If many reviews are simulated this way, many reviews (4 x 4 x 4 x ... ) have to be taken into account which increases the time it takes to compose the graph. Therefore, for reviews later than n days from now are simulated by randomly choosing an outcome." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:14 +msgid "In summary, higher n gives a more accurate graph, but it takes more time to compose the graph." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:16 +msgid "Precision of computation" +msgstr "" + +#: src/advanced-features/advanced-statistics.md:18 +msgid "Reviews which occur with a probability smaller than 100% minus the configured precision of the computation are simulated by randomly choosing an outcome rather than taking into account each possible outcome. This setting is only applicable if the first n days are computed. If Advanced Statistics are disabled, the **Forecast** graph shows the estimated number of reviews that will be due on a given day in the future if you do not review cards, learn no new cards and fail no cards." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:21 +msgid "In summary, higher precision gives a more accurate graph, but it takes more time to compose the graph." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:23 +msgid "Number of iterations of the simulation" +msgstr "" + +#: src/advanced-features/advanced-statistics.md:24 +msgid "Composes the graph several times and then displays the average of these graphs. Each time the graph is composed, another outcome might be randomly chosen. If we average many outcomes which are randomly chosen taking into account the probabilities from the review log, the average outcome will likely be close to the average of the probabilities from the review log. If we average many graphs, the average graph will likely be close to the graph which is generated by taking into account all possible outcomes. If the number of graphs which are averaged is not too high, it will be faster than taking into account all possible outcomes." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:29 +msgid "In summary, a higher number of iterations gives a more accurate graph, but it takes more time to compose the graph." +msgstr "" + +#: src/advanced-features/reminders.md:2 +msgid "AnkiDroid can remind you to devote some time to reviewing cards every day at a specific time via Android's notification framework. You can configure reminders for each options group independently. To configure a notification go to Deck options > Reminders, then tick the checkbox and select the time you want to be notified at. To stop receiving notifications go to Deck options > Reminders and unmark the checkbox." +msgstr "" + +#: src/advanced-features/reminders.md:7 +msgid "Notifications only work for top level decks. Please let us know if you want us to add notifications for subdecks too." +msgstr "" + +#: src/advanced-features/set-language-hint.md:2 +msgid "AnkiDroid has an in Automatic Language Selection feature in the Note Editor starting with AnkiDroid 2.13. This feature allows you to define a default language to be used in your keyboard for a field in a note type." +msgstr "" + +#: src/advanced-features/set-language-hint.md:5 +msgid "For example, if you have Russian and English note fields, and your keyboard supports the setImeHintLocales Android API, the keyboard layout will switch to Russian in the first field and back to English in the second automatically when the fields get focus. [Checkout video reference for demonstration](https://www.youtube.com/watch?v=JrxDjTrRhBE)" +msgstr "" + +#: src/help.md:1 +msgid "Help & Support" +msgstr "" + +#: src/help.md:3 +msgid "Before Asking" +msgstr "" + +#: src/help.md:5 +msgid "Before asking for help, please try searching through the [AnkiDroid Manual](intro.md), the list of [Frequently Asked Questions](https://github.com/ankidroid/Anki-Android/wiki/FAQ), and also the main [Anki Manual](https://docs.ankiweb.net) for general help with the Anki system and features, and any issues not limited to Android." +msgstr "" + +#: src/help.md:7 +msgid "Support" +msgstr "" + +#: src/help.md:8 +msgid "If you were unable to find what you needed in the documentation above, please visit the relevant site below:" +msgstr "" + +#: src/help.md:10 +msgid "Non-Android-Specific Issues" +msgstr "" + +#: src/help.md:11 +msgid "AnkiDroid (the Android version of Anki) is created and managed independently from other Anki versions. For the PC / Web / iOS versions, and general Anki issues that are not limited to Android, please visit the main [Anki support site](https://forums.ankiweb.net)." +msgstr "" + +#: src/help.md:13 +msgid "AnkiDroid Questions" +msgstr "" + +#: src/help.md:14 +msgid "For questions and help concerning AnkiDroid, please visit the [user forum](https://groups.google.com/g/anki-android), or you can send your questions to the forum's [public email address](mailto:public-forum@ankidroid.org) if you don't want to register on the forum." +msgstr "" + +#: src/help.md:16 +msgid "Bug Reports and Feature Requests" +msgstr "" + +#: src/help.md:17 +msgid "For bug reports and feature requests, please search through the current list of open issues on the [AnkiDroid issue tracker](https://github.com/ankidroid/Anki-Android/issues), and if there are no existing issues, create a new issue including as much information as possible. For bug reports, please also include the output of **debug info** by following the steps below: " +msgstr "" + +#: src/help.md:20 +msgid "Open the navigation drawer by tapping the button on the top left of the screen" +msgstr "" + +#: src/help.md:21 +msgid "Tap **settings**" +msgstr "" + +#: src/help.md:22 +msgid "Tap **advanced**" +msgstr "" + +#: src/help.md:23 +msgid "Tap **about AnkiDroid** at the bottom" +msgstr "" + +#: src/help.md:24 +msgid "Tap the **copy debug info** button at the bottom (which copies **debug info** to the clipboard)" +msgstr "" + +#: src/help.md:25 +msgid "If filling out the bug report on your mobile device, paste the contents of the clipboard directly to the issue. Alternatively, you can paste the contents of the clipboard into a new email, send it to yourself, then copy and paste that into the bug report from your computer." +msgstr "" + +#: src/help.md:27 +msgid "![DebugInfo.png](img/DebugInfo.png)" +msgstr "" + +#: src/help.md:29 +msgid "**Note:** if you are unable to open the app at all, so cannot even access **settings** then please follow [these instructions](https://github.com/ankidroid/Anki-Android/wiki/Unopenable-collections)." +msgstr "" + +#: src/help.md:31 +msgid "This **debug info** is important as it allows us to match your report with our internal crash report data. " +msgstr "" + +#: src/help.md:34 +msgid "AnkiDroid is an open source project, and anyone is welcome to contribute (including non-developers)! For help with contributing to AnkiDroid, please first check the [contribution wiki page](https://github.com/ankidroid/Anki-Android/wiki/Contributing), and ask any further questions in the [main forum](https://groups.google.com/g/anki-android)." +msgstr "" + +#: src/beta-testing.md:2 +msgid "If you want to try out the latest features in AnkiDroid, you can sign up for the beta testing program as follows:" +msgstr "" + +#: src/beta-testing.md:4 +msgid "Visit the [Google Play Beta page](https://play.google.com/apps/testing/com.ichi2.anki)" +msgstr "" + +#: src/beta-testing.md:5 +msgid "Click **Become a beta tester**" +msgstr "" + +#: src/beta-testing.md:7 +msgid "After following these steps, the latest beta version will automatically be installed by Google Play in the same way as ordinary updates." +msgstr "" + +#: src/beta-testing.md:9 +msgid "If you are more adventurous, you can also become an alpha tester, by joining the [alpha testers group](https://groups.google.com/g/ankidroidalphatesters) in addition to performing the above steps for beta testing." +msgstr "" + +#: src/beta-testing.md:11 +msgid "Please submit any bugs you find in these development versions to the AnkiDroid issue tracker, as per the [main help page](help.md)." +msgstr "" + +#: src/beta-testing.md:13 +msgid "If you wish to leave the testing program at any time, simply visit the [Google Play Beta page](https://play.google.com/apps/testing/com.ichi2.anki) and click **Leave the test**." +msgstr "" + +#: src/contributing.md:3 +msgid "[Get involved](#get-involved)" +msgstr "" + +#: src/contributing.md:4 +msgid "[Translate](#translate)" +msgstr "" + +#: src/contributing.md:5 +msgid "[Develop](#develop)" +msgstr "" + +#: src/contributing.md:7 +msgid "AnkiDroid is an open source project, and its development relies on contributions from volunteers. Here are some of the ways you can contribute to the AnkiDroid project:" +msgstr "" + +#: src/contributing.md:9 +msgid "Get involved" +msgstr "" + +#: src/contributing.md:10 +msgid "Rate the app, join the [AnkiDroid forum](https://groups.google.com/g/anki-android) and answer questions for other users, submit bug reports, become a [beta tester](beta-testing.md), etc. More detailed information on ways you can contribute as a non-developer can be found on the [Wiki](https://github.com/ankidroid/Anki-Android/wiki/Contributing)." +msgstr "" + +#: src/contributing.md:12 +msgid "Translate" +msgstr "" + +#: src/contributing.md:13 +msgid "Translations of AnkiDroid and this user manual are all contributed by users, and are greatly appreciated. See the " +msgstr "" + +#: src/contributing.md:14 +msgid "translating" +msgstr "" + +#: src/contributing.md:14 +msgid " wiki page for detailed instructions on how to contribute translations." +msgstr "" + +#: src/contributing.md:16 +msgid "Develop" +msgstr "" + +#: src/contributing.md:17 +msgid "The source code for AnkiDroid is available on our main [Github page](https://github.com/ankidroid/Anki-Android), and bug fixes as well as new features are very welcome. Before investing a lot of time on working on a new feature, you may like to ask on the forum first if it's likely to be merged into the main project, as not all features will be accepted. If you are just getting started with Android programming, feel free to ask on the forum for some tips and/or tasks which are suitable for beginners." +msgstr "" + +#: src/changelog/v2.15.md:1 +msgid "Version 2.15.6 (20210714)" +msgstr "" + +#: src/changelog/v2.15.md:2 +msgid "One more crash fix, no crashes shall be left unfixed! If we can help it." +msgstr "" + +#: src/changelog/v2.15.md:4 +msgid "Version 2.15.5 (20210713)" +msgstr "" + +#: src/changelog/v2.15.md:5 +msgid "[🤜🤛 Thank you! Your support makes the fixes happen!](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:6 +msgid "Full-screen navigation drawer drag is a preference, default off" +msgstr "" + +#: src/changelog/v2.15.md:7 +msgid "Floating Action Button ('+') labels are clickable again" +msgstr "" + +#: src/changelog/v2.15.md:8 +msgid "Fixed crash on first run post-install on tablets" +msgstr "" + +#: src/changelog/v2.15.md:9 +msgid "Fixed odd weekly breakdown stats chart behavior" +msgstr "" + +#: src/changelog/v2.15.md:10 +msgid "Fixed crash creating new deck from deck chooser" +msgstr "" + +#: src/changelog/v2.15.md:11 +msgid "[Updated translations](https://crowdin.com/project/ankidroid) (thank you translators!)" +msgstr "" + +#: src/changelog/v2.15.md:12 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/47?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:13 +msgid "We are deep into development for v2.16 + Google Summer of Code, lots of new stuff coming" +msgstr "" + +#: src/changelog/v2.15.md:14 +msgid "Happy reviewing!" +msgstr "" + +#: src/changelog/v2.15.md:16 +msgid "Version 2.15.4 (20210602)" +msgstr "" + +#: src/changelog/v2.15.md:17 +msgid "Saw one crash show up for 2.15.3: if you touched the 3 numbers instead of the deck name on the deck list on phones, it would crash" +msgstr "" + +#: src/changelog/v2.15.md:19 +msgid "Temporarily revert full screen navigation drawer option to fix" +msgstr "" + +#: src/changelog/v2.15.md:21 +msgid "Version 2.15.3 (20210602)" +msgstr "" + +#: src/changelog/v2.15.md:22 +msgid "[❤️ Thank you so much for the donations! We appreciate it ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:23 +msgid "Another batch of fixes stabilizing all the work done for AnkiDroid 2.15" +msgstr "" + +#: src/changelog/v2.15.md:24 +msgid "Fix \"Search All Decks\" in Card Browser not searching" +msgstr "" + +#: src/changelog/v2.15.md:25 +msgid "Make new full screen navigation drawer open optional, default off" +msgstr "" + +#: src/changelog/v2.15.md:26 +msgid "Preserve edited search in card browser if navigation drawer opens" +msgstr "" + +#: src/changelog/v2.15.md:27 +msgid "Fix crash editing Tags dialog when switching back from another app" +msgstr "" + +#: src/changelog/v2.15.md:28 +msgid "Fix incorrect cloze help link" +msgstr "" + +#: src/changelog/v2.15.md:29 +msgid "Increase touchable area of undo icon" +msgstr "" + +#: src/changelog/v2.15.md:30 +msgid "Fix legacy / handebar template parsing" +msgstr "" + +#: src/changelog/v2.15.md:31 +msgid "Fix icon sizes for notifications and search" +msgstr "" + +#: src/changelog/v2.15.md:32 +msgid "Fix audio files incorrectly importing when attached" +msgstr "" + +#: src/changelog/v2.15.md:33 +msgid "Fix deck options \"steps\" showing up with lots of decimal places" +msgstr "" + +#: src/changelog/v2.15.md:34 +msgid "Update translations, add Kannada language" +msgstr "" + +#: src/changelog/v2.15.md:35 +msgid "Fix F-Droid app store publishing" +msgstr "" + +#: src/changelog/v2.15.md:36 +msgid "Correct navigation away from and back to Changelog" +msgstr "" + +#: src/changelog/v2.15.md:37 +msgid "Fix template parsing for \"{{FrontSide}}\"" +msgstr "" + +#: src/changelog/v2.15.md:38 +msgid "Fix stats tab view layout in RTL context" +msgstr "" + +#: src/changelog/v2.15.md:39 +msgid "Fix preview of cloze cards from note editor " +msgstr "" + +#: src/changelog/v2.15.md:40 +msgid "[Full changelog here](https://github.com/ankidroid/Anki-Android/milestone/45?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:43 +msgid "Version 2.15.2 (20210526)" +msgstr "" + +#: src/changelog/v2.15.md:44 +msgid "[❤️ Your donations here give us the time to work on the app, thank you! ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:45 src/changelog/v2.15.md:58 +msgid "🔥 Hot fixes for 2.15.0 issues (See below for 2.15.0 notes 👇 it was a huge release!)" +msgstr "" + +#: src/changelog/v2.15.md:46 +msgid "2.15 should have no regressions now we think 🤞 " +msgstr "" + +#: src/changelog/v2.15.md:47 +msgid "That means we'll slow down the releases and these popups now, sorry + thank you " +msgstr "" + +#: src/changelog/v2.15.md:48 +msgid "Fix another API issue breaking card add from external apps" +msgstr "" + +#: src/changelog/v2.15.md:49 +msgid "Fix conditional template issue that caused blank cards for some" +msgstr "" + +#: src/changelog/v2.15.md:50 +msgid "Fix auto-advance ignoring \"no advance\" setting if card had audio" +msgstr "" + +#: src/changelog/v2.15.md:51 +msgid "Gracefully handle corrupt collections with invalid current decks selected" +msgstr "" + +#: src/changelog/v2.15.md:52 +msgid "Publish to Amazon App Store again (go get AnkiDroid on your Fire devices!)" +msgstr "" + +#: src/changelog/v2.15.md:53 +msgid "[Issue tracker milestone here](https://github.com/ankidroid/Anki-Android/milestone/44?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:56 +msgid "Version 2.15.1 (20210525)" +msgstr "" + +#: src/changelog/v2.15.md:57 +msgid "[❤️ Your donations funded this rapid set of fixes, enjoy! ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:59 +msgid "Do not auto-update users to scheduler v2. Yet." +msgstr "" + +#: src/changelog/v2.15.md:60 +msgid "Fix crash on undo after deck delete" +msgstr "" + +#: src/changelog/v2.15.md:61 +msgid "Try harder to successfully paste images" +msgstr "" + +#: src/changelog/v2.15.md:62 +msgid "Reviewer performance fix - only load mathjax if needed" +msgstr "" + +#: src/changelog/v2.15.md:63 +msgid "Fixed compatibility issue for 2.15 collections on 2.14" +msgstr "" + +#: src/changelog/v2.15.md:64 +msgid "Fixed API issue breaking card add from external apps" +msgstr "" + +#: src/changelog/v2.15.md:65 +msgid "Fresh language translations. See a bad translation? [You can fix it easily!](https://crowdin.com/project/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:66 +msgid "[Detailed issue log](https://github.com/ankidroid/Anki-Android/milestone/43?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:68 +msgid "Version 2.15.0 (20210524)" +msgstr "" + +#: src/changelog/v2.15.md:69 +msgid "[❤️ Your donations funded these features, enjoy! ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:70 +msgid "Thanks to [Google Summer of Code](https://github.com/ankidroid/Anki-Android/wiki/Google-Summer-of-Code-2021) students for a HUGE effort!" +msgstr "" + +#: src/changelog/v2.15.md:71 +msgid "Way too many changes to describe, but here are the highlights:" +msgstr "" + +#: src/changelog/v2.15.md:72 +msgid "New timezone code supported for sync with AnkiDesktop!" +msgstr "" + +#: src/changelog/v2.15.md:73 +msgid "Performance, stability improvements everywhere" +msgstr "" + +#: src/changelog/v2.15.md:74 +msgid "General UI improvements (accessibility, dark mode, design, more)" +msgstr "" + +#: src/changelog/v2.15.md:75 +msgid "Many new keyboard shortcuts and gesture actions" +msgstr "" + +#: src/changelog/v2.15.md:76 +msgid "Languages: Added Odia, Malayalam; big RTL support improvements!" +msgstr "" + +#: src/changelog/v2.15.md:77 +msgid "Reviewer: Javascript API: many new methods" +msgstr "" + +#: src/changelog/v2.15.md:78 +msgid "Improved account login, sync conflict, card template UI" +msgstr "" + +#: src/changelog/v2.15.md:79 +msgid "Tags and Decks dialogs have search!" +msgstr "" + +#: src/changelog/v2.15.md:80 +msgid "Whiteboard: erase, pen colors, stroke width" +msgstr "" + +#: src/changelog/v2.15.md:81 +msgid "NoteEditor: Mathjax 3, capitalize sentences setting" +msgstr "" + +#: src/changelog/v2.15.md:82 +msgid "Huge quality improvements all over codebase, helps future developers" +msgstr "" + +#: src/changelog/v2.15.md:83 +msgid "[🚧 Full 638 item changelog here! 🚧](https://github.com/ankidroid/Anki-Android/milestone/37?closed=1)" +msgstr "" + +#: src/changelog/v2.14.md:1 +msgid "Version 2.14.6 (20210309)" +msgstr "" + +#: src/changelog/v2.14.md:2 +msgid "Reviewer: fix \"my card is blank now with 2.14.5! help!\" 😱" +msgstr "" + +#: src/changelog/v2.14.md:3 +msgid "Reviewer: fix Android 8/8.1 review buttons disappear (finally?)" +msgstr "" + +#: src/changelog/v2.14.md:5 +msgid "Version 2.14.5 (20210307)" +msgstr "" + +#: src/changelog/v2.14.md:6 +msgid "We really appreciate the [donations](https://opencollective.com/ankidroid), they paid for these fixes 🤝" +msgstr "" + +#: src/changelog/v2.14.md:7 +msgid "NoteEditor: Android 11 users can crop!" +msgstr "" + +#: src/changelog/v2.14.md:8 +msgid "NoteEditor: Canceling crop twice won't delete your image" +msgstr "" + +#: src/changelog/v2.14.md:9 +msgid "DeckList: parent limits altered to match Desktop" +msgstr "" + +#: src/changelog/v2.14.md:10 +msgid "DeckList: current deck saved as correct type" +msgstr "" + +#: src/changelog/v2.14.md:11 +msgid "SchedulerV2: allow very small delays" +msgstr "" + +#: src/changelog/v2.14.md:12 +msgid "KNOWN ISSUE: [Android 8/8.1 answer buttons disappear](https://github.com/ankidroid/Anki-Android/issues/7369). Use gestures as workaround." +msgstr "" + +#: src/changelog/v2.14.md:13 +msgid "Anyone with Android 8/8.1 that reproduces this and knows how to develop Android layouts? We'd love the help!" +msgstr "" + +#: src/changelog/v2.14.md:15 +msgid "Version 2.14.4 (20210307)" +msgstr "" + +#: src/changelog/v2.14.md:16 +msgid "Re-released immediately as 2.14.5 after release script issue 🤷😅" +msgstr "" + +#: src/changelog/v2.14.md:18 +msgid "Version 2.14.3 (20210109)" +msgstr "" + +#: src/changelog/v2.14.md:19 +msgid "[The AnKing](https://www.youtube.com/c/TheAnKing) has graced us with a [new intro video](https://youtu.be/iuBU_OM9oAM)! 🤓" +msgstr "" + +#: src/changelog/v2.14.md:20 +msgid "Still happily overwhelmed by the [donations](https://opencollective.com/ankidroid) 💪" +msgstr "" + +#: src/changelog/v2.14.md:21 +msgid "Reviewer: Fix mark note keyboard shortcut" +msgstr "" + +#: src/changelog/v2.14.md:22 +msgid "NoteEditor: Fix to remove padding if removing formatting toolbar" +msgstr "" + +#: src/changelog/v2.14.md:23 +msgid "Previewer: Fix to show same card after edit" +msgstr "" + +#: src/changelog/v2.14.md:24 +msgid "Scheduler: Fix v1 scheduler completes deck when only learn cards due" +msgstr "" + +#: src/changelog/v2.14.md:26 +msgid "Version 2.14.2 (20201202)" +msgstr "" + +#: src/changelog/v2.14.md:27 +msgid "Wow! We are humbled by the [donations](https://opencollective.com/ankidroid) 🤯" +msgstr "" + +#: src/changelog/v2.14.md:28 +msgid "The resources are already going to contributors to improve the app! Thank you ❤️ " +msgstr "" + +#: src/changelog/v2.14.md:29 +msgid "Note Editor: Fix image crop not working first time" +msgstr "" + +#: src/changelog/v2.14.md:30 +msgid "Note Editor: Paste image at cursor not end" +msgstr "" + +#: src/changelog/v2.14.md:31 +msgid "Note Editor: Fix Ctrl+C opens preview" +msgstr "" + +#: src/changelog/v2.14.md:32 +msgid "Note Editor: Add menubar toggle to disable editing toolbar" +msgstr "" + +#: src/changelog/v2.14.md:33 +msgid "Home Screen: Fix Vivo device shortcut creation (again)" +msgstr "" + +#: src/changelog/v2.14.md:34 +msgid "Reviewer: Fix numeric keypad not working" +msgstr "" + +#: src/changelog/v2.14.md:35 +msgid "Note Editor: Fix cloze cards going to wrong deck" +msgstr "" + +#: src/changelog/v2.14.md:36 +msgid "Navigation Menu: Fix safe display app hang" +msgstr "" + +#: src/changelog/v2.14.md:37 +msgid "Preferences: Fix gestures menu translation / ordering issue" +msgstr "" + +#: src/changelog/v2.14.md:38 +msgid "Translations: thanks [translators!](https://crowdin.com/project/ankidroid/activity_stream) - you can help too!" +msgstr "" + +#: src/changelog/v2.14.md:39 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/39?closed=1)" +msgstr "" + +#: src/changelog/v2.14.md:41 +msgid "Version 2.14.1 (2020-11-23)" +msgstr "" + +#: src/changelog/v2.14.md:42 +msgid "Always free, always open source, but you may [donate if you like 😊](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.14.md:43 +msgid "Move sync button to right of action bar (vs search)" +msgstr "" + +#: src/changelog/v2.14.md:44 +msgid "Fix duplicate note detection" +msgstr "" + +#: src/changelog/v2.14.md:45 +msgid "Fix add deck shortcut on Vivo devices" +msgstr "" + +#: src/changelog/v2.14.md:46 +msgid "Fix non-translatable 'Card Info' strings" +msgstr "" + +#: src/changelog/v2.14.md:47 +msgid "Fix suspended card handling in filtered decks" +msgstr "" + +#: src/changelog/v2.14.md:48 +msgid "Sync translations from volunteers on our crowdin.com site (thank you!)" +msgstr "" + +#: src/changelog/v2.14.md:49 +msgid "Fix crash on mismatched WebView ABIs" +msgstr "" + +#: src/changelog/v2.14.md:50 +msgid "Fix crash invalid filename handling while pasting image" +msgstr "" + +#: src/changelog/v2.14.md:51 +msgid "Fix crash selecting cards in card browser" +msgstr "" + +#: src/changelog/v2.14.md:52 +msgid "Fix crash Android 8 in card browser" +msgstr "" + +#: src/changelog/v2.14.md:53 +msgid "Fix crash in undo labeling" +msgstr "" + +#: src/changelog/v2.14.md:54 +msgid "Fix crash reset password when system browser not exported" +msgstr "" + +#: src/changelog/v2.14.md:55 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/38?closed=1)" +msgstr "" + +#: src/changelog/v2.14.md:57 +msgid "Version 2.14.0 (2020-11-18)" +msgstr "" + +#: src/changelog/v2.14.md:58 +msgid "Enabled Donations - we ❤️ you, [now you can ❤️ us 😊](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.14.md:59 +msgid "New Screen: Card Info (from Card Browser or as a Reviewer App Bar Button)" +msgstr "" + +#: src/changelog/v2.14.md:60 +msgid "New Screen: Help - easy access to manual, many community pages/manuals, donation page, translations" +msgstr "" + +#: src/changelog/v2.14.md:61 +msgid "Home screen: Add deck shortcut" +msgstr "" + +#: src/changelog/v2.14.md:62 +msgid "Deck Options: SchedV2: Support setting \"Hard Factor\" " +msgstr "" + +#: src/changelog/v2.14.md:63 +msgid "Card Browser: Add deck filtering" +msgstr "" + +#: src/changelog/v2.14.md:64 +msgid "Card Browser: Filter By Flag" +msgstr "" + +#: src/changelog/v2.14.md:65 +msgid "Card Browser: Adding cards defaults to selected deck" +msgstr "" + +#: src/changelog/v2.14.md:66 +msgid "Card Browser: Many more keyboard shortcuts" +msgstr "" + +#: src/changelog/v2.14.md:67 +msgid "Card Browser: Display the number of cards deleted when deleting a note" +msgstr "" + +#: src/changelog/v2.14.md:68 +msgid "Card Browser: Better handling of deck searches containing wildcards" +msgstr "" + +#: src/changelog/v2.14.md:69 +msgid "Reviewer: Basic Android TV Support" +msgstr "" + +#: src/changelog/v2.14.md:70 +msgid "Reviewer: New Gesture: Abort Learning & Sync" +msgstr "" + +#: src/changelog/v2.14.md:71 +msgid "Reviewer: Support AnkiMobile 9-area gesture touch layout" +msgstr "" + +#: src/changelog/v2.14.md:72 +msgid "Reviewer: Improve \"Empty Card\" UX" +msgstr "" + +#: src/changelog/v2.14.md:73 +msgid "Reviewer: Keyboard shortcuts for flags (Ctrl+1...4)" +msgstr "" + +#: src/changelog/v2.14.md:74 +msgid "Note Editor: Editor Toolbar (& keyboard shortcuts) - hugely requested feature!" +msgstr "" + +#: src/changelog/v2.14.md:75 +msgid "Note Editor Toolbar: Apply Custom Commands (& keyboard shortcuts)" +msgstr "" + +#: src/changelog/v2.14.md:76 +msgid "Note Editor: Paste to Insert Image" +msgstr "" + +#: src/changelog/v2.14.md:77 +msgid "Note Editor: Made fields full-width" +msgstr "" + +#: src/changelog/v2.14.md:78 +msgid "Note Editor: Change Font Size for fields" +msgstr "" + +#: src/changelog/v2.14.md:79 +msgid "Note Editor: Expand/Collapse Fields" +msgstr "" + +#: src/changelog/v2.14.md:80 +msgid "Note Editor: Clear Field button" +msgstr "" + +#: src/changelog/v2.14.md:81 +msgid "Note Editor: Ctrl+Shift+Num to switch fields" +msgstr "" + +#: src/changelog/v2.14.md:82 +msgid "Note Editor: Improved image addition / naming" +msgstr "" + +#: src/changelog/v2.14.md:83 +msgid "Note Editor: Add preference to convert newline to HTML (or not)" +msgstr "" + +#: src/changelog/v2.14.md:84 +msgid "OS Integration: Default to \"Anki Card\" in system context menu vs \"Card Browser\"" +msgstr "" + +#: src/changelog/v2.14.md:85 +msgid "Libanki: Add FileUpload API" +msgstr "" + +#: src/changelog/v2.14.md:86 +msgid "Translations: Tagged screenshots on crowdin.com to help our translators" +msgstr "" + +#: src/changelog/v2.14.md:87 +msgid "Stability: Fix rare crashes (down to ~50/day total w/1.8million installs!)" +msgstr "" + +#: src/changelog/v2.14.md:88 +msgid "Performance: massive number of speedups" +msgstr "" + +#: src/changelog/v2.14.md:89 +msgid "Dev: Massively sped up AnkiDroid builds and improved code readability" +msgstr "" + +#: src/changelog/v2.14.md:90 +msgid "Totals: 345 code changes and hundreds of translations, made by volunteers, in 2 months" +msgstr "" + +#: src/changelog/v2.14.md:91 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/30?closed=1)" +msgstr "" + +#: src/changelog/v2.13.md:1 +msgid "Version 2.13.5 (2020-10-03)" +msgstr "" + +#: src/changelog/v2.13.md:2 +msgid "Fix performance for fast (\\<1s) answers in review" +msgstr "" + +#: src/changelog/v2.13.md:3 +msgid "Add links to new Arabic help/manual translation" +msgstr "" + +#: src/changelog/v2.13.md:4 +msgid "Add back button handling to changelog display" +msgstr "" + +#: src/changelog/v2.13.md:5 +msgid "Add rate button to changelog" +msgstr "" + +#: src/changelog/v2.13.md:6 +msgid "Add warning message to handle future db upgrades" +msgstr "" + +#: src/changelog/v2.13.md:7 +msgid "Sync all translations from our volunteer translators (thanks everyone!)" +msgstr "" + +#: src/changelog/v2.13.md:9 +msgid "Version 2.13.4 (2020-09-29)" +msgstr "" + +#: src/changelog/v2.13.md:10 +msgid "Fix crash showing TagsDialog" +msgstr "" + +#: src/changelog/v2.13.md:11 +msgid "Fix crash in gesture detection" +msgstr "" + +#: src/changelog/v2.13.md:12 +msgid "Improve import interrupted error message" +msgstr "" + +#: src/changelog/v2.13.md:13 +msgid "Fix scheduler counts after undo" +msgstr "" + +#: src/changelog/v2.13.md:14 +msgid "Fix Card Browser preview after sort" +msgstr "" + +#: src/changelog/v2.13.md:15 +msgid "Fix button display if answer animation incomplete" +msgstr "" + +#: src/changelog/v2.13.md:16 +msgid "Sync all translations" +msgstr "" + +#: src/changelog/v2.13.md:18 +msgid "Version 2.13.3 (2020-09-23)" +msgstr "" + +#: src/changelog/v2.13.md:19 +msgid "Fix double-clicking answer buttons skipping cards" +msgstr "" + +#: src/changelog/v2.13.md:20 +msgid "Change missing media warning to twice-per-session not twice-per-deck" +msgstr "" + +#: src/changelog/v2.13.md:21 +msgid "Change answer button fade on open" +msgstr "" + +#: src/changelog/v2.13.md:22 +msgid "Updated all translations from volunteer crowdin.com site up to 20200923" +msgstr "" + +#: src/changelog/v2.13.md:24 +msgid "Version 2.13.2 (2020-09-19)" +msgstr "" + +#: src/changelog/v2.13.md:25 +msgid "Fix Crash rare on Card Browser exit" +msgstr "" + +#: src/changelog/v2.13.md:26 +msgid "Fix Crash Android 4.4" +msgstr "" + +#: src/changelog/v2.13.md:27 +msgid "Fix Open Deck failures / improve related messaging" +msgstr "" + +#: src/changelog/v2.13.md:28 +msgid "Fix messaging for Xioami cloze workaround" +msgstr "" + +#: src/changelog/v2.13.md:29 +msgid "Move \"set field language\" after share on Note Editor context menu" +msgstr "" + +#: src/changelog/v2.13.md:31 +msgid "Version 2.13.1 (2020-09-17)" +msgstr "" + +#: src/changelog/v2.13.md:32 +msgid "Add cloze via clipboard paste workaround on MIUI/Xiaomi devices" +msgstr "" + +#: src/changelog/v2.13.md:33 +msgid "Fix Navigation drawer respects safe display / disable animations preference" +msgstr "" + +#: src/changelog/v2.13.md:34 +msgid "Fix Reviewer buttons respect safe display / disable animations preference" +msgstr "" + +#: src/changelog/v2.13.md:35 +msgid "Fix Deck Picker bottom bar opacity" +msgstr "" + +#: src/changelog/v2.13.md:36 +msgid "Fix Error message about missing content on cards" +msgstr "" + +#: src/changelog/v2.13.md:37 +msgid "Fix crash selecting deck that disappears during sync" +msgstr "" + +#: src/changelog/v2.13.md:39 +msgid "Version 2.13.0 (2020-09-15)" +msgstr "" + +#: src/changelog/v2.13.md:40 +msgid "Field tag (such as \"{{Front}}\") appearing in a note's field will be shown as-is in cards." +msgstr "" + +#: src/changelog/v2.13.md:41 +msgid "Add Sync icon badge when changes are pending sync (can be disabled in options)" +msgstr "" + +#: src/changelog/v2.13.md:42 +msgid "Add Edit Note from card Preview while in Card Browser" +msgstr "" + +#: src/changelog/v2.13.md:43 +msgid "Add \"Anki Card\" to system context menu (like \"Card Browser\") - disabled by default" +msgstr "" + +#: src/changelog/v2.13.md:44 +msgid "Add Set keyboard language for specific fields in the note editor (example: one field Japanese, other field Portuguese for input)." +msgstr "" + +#: src/changelog/v2.13.md:45 +msgid "Add Keep keyboard open after adding a note" +msgstr "" + +#: src/changelog/v2.13.md:46 +msgid "Add Card properties available in JavaScript API" +msgstr "" + +#: src/changelog/v2.13.md:47 +msgid "Add JavaScript API versioning for scripts (basis for future plugins)" +msgstr "" + +#: src/changelog/v2.13.md:48 +msgid "Add Auto-Login when selecting saved user account" +msgstr "" + +#: src/changelog/v2.13.md:49 +msgid "Add Allow import of collection.anki21 files when under SchedV1" +msgstr "" + +#: src/changelog/v2.13.md:50 +msgid "Add New screen for first-time users" +msgstr "" + +#: src/changelog/v2.13.md:51 +msgid "Add Button animations when answering cards" +msgstr "" + +#: src/changelog/v2.13.md:52 +msgid "Add Note Editor: Add shortcuts Ctrl+(Alt)+Shift+C to add a cloze." +msgstr "" + +#: src/changelog/v2.13.md:53 +msgid "Fix Some cards in learning were not shown at the right time (Only if you undo/bury/suspend/reset/reschedule and the next card goes to learning mode)" +msgstr "" + +#: src/changelog/v2.13.md:54 +msgid "Fix Selected deck has translucent background if a deck picker background is set" +msgstr "" + +#: src/changelog/v2.13.md:55 +msgid "Fix Improved preview screens" +msgstr "" + +#: src/changelog/v2.13.md:56 +msgid "Fix Better accessibility in Deck Browser for partially sighted users" +msgstr "" + +#: src/changelog/v2.13.md:57 +msgid "Fix Improve visibility of \"Add/Remove Option Group\"" +msgstr "" + +#: src/changelog/v2.13.md:58 +msgid "Fix Improved messages for sync rate limiting error" +msgstr "" + +#: src/changelog/v2.13.md:59 +msgid "Fix Improved messages for reducing study limits" +msgstr "" + +#: src/changelog/v2.13.md:60 +msgid "Fix Improved messaging when collection is missing media" +msgstr "" + +#: src/changelog/v2.13.md:61 +msgid "Fix Improve feedback when accessing Debug Info" +msgstr "" + +#: src/changelog/v2.13.md:62 +msgid "Fix Add additional warnings to reschedule dialog" +msgstr "" + +#: src/changelog/v2.13.md:63 +msgid "Fix Whiteboard pen color can be disabled by pressing icon again" +msgstr "" + +#: src/changelog/v2.13.md:64 +msgid "Fix Ensure all menu items in the reviewer can be customized by \"App Bar Buttons\" setting" +msgstr "" + +#: src/changelog/v2.13.md:65 +msgid "Fix Scheduler discrepancy handling early interval on filtered decks" +msgstr "" + +#: src/changelog/v2.13.md:66 +msgid "Fix Exports work when cards are missing media" +msgstr "" + +#: src/changelog/v2.13.md:67 +msgid "Fix Crash due to logging." +msgstr "" + +#: src/changelog/v2.13.md:68 +msgid "Fix Toasts used to show one more card than the number of card actually reviewed during the time box" +msgstr "" + +#: src/changelog/v2.13.md:69 +msgid "Fix Handle newlines properly in Note Editor Preview" +msgstr "" + +#: src/changelog/v2.13.md:70 +msgid "Fix Improve AnkiDroid opening animation" +msgstr "" + +#: src/changelog/v2.13.md:71 +msgid "Fix Show correct answer button when answering via Keyboard" +msgstr "" + +#: src/changelog/v2.13.md:72 +msgid "Fix \"New Cards Added\" Statistic" +msgstr "" + +#: src/changelog/v2.13.md:73 +msgid "Fix Crash when inserting a cloze when selecting text from right-to-left via keyboard" +msgstr "" + +#: src/changelog/v2.13.md:74 +msgid "Fix \"Show Password\" icon revealing saved password" +msgstr "" + +#: src/changelog/v2.13.md:75 +msgid "Fix Card browser still contains card after the app goes into background" +msgstr "" + +#: src/changelog/v2.13.md:76 +msgid "Fix Daily unbury occurs during sync if necessary" +msgstr "" + +#: src/changelog/v2.13.md:77 +msgid "Fix On big screen, buttons moved during loading" +msgstr "" + +#: src/changelog/v2.13.md:78 +msgid "Translators If some text change because of minor changes (typos) you won't have to translate it again" +msgstr "" + +#: src/changelog/v2.13.md:79 +msgid "Performance improvements (specifically: initial loading of large collection (lot of decks, note type, card type, fields, long templates...), card browser, deck picker startup, next card view, undo, cancelling tasks such as computing a list of card in browser)" +msgstr "" + +#: src/changelog/v2.13.md:80 +msgid "Dev: Massive dev workflow improvements and automated checks for our translations." +msgstr "" + +#: src/changelog/v2.13.md:81 +msgid "Dev: Implement backend for CSV Importer" +msgstr "" + +#: src/changelog/v2.13.md:82 +msgid "Dev: Improve crash reporting on app startup" +msgstr "" + +#: src/changelog/v2.13.md:83 +msgid "Dev: Massive improvement in testing, especially around scheduler / card queue behavior" +msgstr "" + +#: src/changelog/v2.13.md:84 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/27?closed=1)" +msgstr "" + +#: src/changelog/v2.12.md:1 +msgid "Version 2.12.1 (2020-07-21)" +msgstr "" + +#: src/changelog/v2.12.md:2 +msgid "Fix bug previewing edited notes after changing field count" +msgstr "" + +#: src/changelog/v2.12.md:3 +msgid "Fix crash previewing edited notes from dynamic decks" +msgstr "" + +#: src/changelog/v2.12.md:4 +msgid "Fix crash restarting app after a crash" +msgstr "" + +#: src/changelog/v2.12.md:5 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/28?closed=1)" +msgstr "" + +#: src/changelog/v2.12.md:7 +msgid "Version 2.12.0 (2020-07-18)" +msgstr "" + +#: src/changelog/v2.12.md:8 +msgid "Add Crop image feature" +msgstr "" + +#: src/changelog/v2.12.md:9 +msgid "Add Preview in note editor" +msgstr "" + +#: src/changelog/v2.12.md:10 +msgid "Add edit tags in reviewer" +msgstr "" + +#: src/changelog/v2.12.md:11 +msgid "Add volume buttons as gestures" +msgstr "" + +#: src/changelog/v2.12.md:12 +msgid "Add whiteboard pen color" +msgstr "" + +#: src/changelog/v2.12.md:13 +msgid "Add microphone tool bar in reviewer" +msgstr "" + +#: src/changelog/v2.12.md:14 +msgid "Add javascript API (check the Wiki!)" +msgstr "" + +#: src/changelog/v2.12.md:15 +msgid "Improve: app is 3MB smaller" +msgstr "" + +#: src/changelog/v2.12.md:16 +msgid "Fix: show whole tag in tags dialog" +msgstr "" + +#: src/changelog/v2.12.md:17 +msgid "Fix copy note copies tags too" +msgstr "" + +#: src/changelog/v2.12.md:18 +msgid "Fix data corruption canceling template edits" +msgstr "" + +#: src/changelog/v2.12.md:19 +msgid "performance and bug fixes everywhere!" +msgstr "" + +#: src/changelog/v2.12.md:21 +msgid "11 volunteers made hundreds of individual changes this release" +msgstr "" + +#: src/changelog/v2.12.md:23 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/18?closed=1)" +msgstr "" + +#: src/changelog/v2.11.md:1 +msgid "Version 2.11.3 (2020-06-17)" +msgstr "" + +#: src/changelog/v2.11.md:2 +msgid "Fix out-of-memory errors when importing very large decks" +msgstr "" + +#: src/changelog/v2.11.md:3 +msgid "Fix incorrect out-of-space message on import in Android 4" +msgstr "" + +#: src/changelog/v2.11.md:4 +msgid "Fix crash if card viewer closed quickly after view" +msgstr "" + +#: src/changelog/v2.11.md:5 +msgid "Fix unzip fail on .apkg files >2GB" +msgstr "" + +#: src/changelog/v2.11.md:6 +msgid "Fix crash on edit note in browser multi-select" +msgstr "" + +#: src/changelog/v2.11.md:8 +msgid "Version 2.11.2 (2020-06-10)" +msgstr "" + +#: src/changelog/v2.11.md:9 +msgid "Add santali language" +msgstr "" + +#: src/changelog/v2.11.md:10 +msgid "Fix Hebrew, Indonesian, Tagalog languages" +msgstr "" + +#: src/changelog/v2.11.md:11 +msgid "Improve error reporting around apkg import failures" +msgstr "" + +#: src/changelog/v2.11.md:12 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/24?closed=1)" +msgstr "" + +#: src/changelog/v2.11.md:14 +msgid "Version 2.11.1 (2020-06-08)" +msgstr "" + +#: src/changelog/v2.11.md:15 +msgid "Fix crash in Card Browser multi-select mode" +msgstr "" + +#: src/changelog/v2.11.md:16 +msgid "Fix Custom Steps interval dialog space entry issue" +msgstr "" + +#: src/changelog/v2.11.md:17 +msgid "Fix flags don't export with deck" +msgstr "" + +#: src/changelog/v2.11.md:18 +msgid "Fix AnkiDroid API doesn't handle null model id (Anki Compatibility workaround)" +msgstr "" + +#: src/changelog/v2.11.md:19 +msgid "Fix translation crash in sync dialog in Azerbaijani" +msgstr "" + +#: src/changelog/v2.11.md:20 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/23?closed=1)" +msgstr "" + +#: src/changelog/v2.11.md:22 +msgid "Version 2.11.0 (2020-06-05)" +msgstr "" + +#: src/changelog/v2.11.md:23 +msgid "Android minimum supported version is now 4.1 / Jelly Bean / API16 (AnkiWeb Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:24 +msgid "Change sibling burying should default to off (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:25 +msgid "Change learn cards do not go in filtered decks in v1 sched (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:26 +msgid "Add Browser Appearance screen, to edit Card Browser render format (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:27 +msgid "Add guidance in Note Editor if no cards will be generated despite full fields" +msgstr "" + +#: src/changelog/v2.11.md:28 +msgid "Add all translations from our crowdin.com translation site" +msgstr "" + +#: src/changelog/v2.11.md:29 +msgid "Add ability to decrease daily limit in custom study (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:30 +msgid "Add ability to block gesture handling when tapping hints in Reviewer" +msgstr "" + +#: src/changelog/v2.11.md:31 +msgid "Add create subdeck option in deck list long-press context menu" +msgstr "" + +#: src/changelog/v2.11.md:32 +msgid "Add edit note action in Card Browser multi-select mode" +msgstr "" + +#: src/changelog/v2.11.md:33 +msgid "Add ability to turn off 'Card Browser' system text context menu item" +msgstr "" + +#: src/changelog/v2.11.md:34 +msgid "Add nightMode CSS selector for card HTML (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:35 +msgid "Add ability to change just the case of a deck name" +msgstr "" + +#: src/changelog/v2.11.md:36 +msgid "Add page-up/page-down gestures" +msgstr "" + +#: src/changelog/v2.11.md:37 +msgid "Improve gesture handling in full-screen / immersive mode" +msgstr "" + +#: src/changelog/v2.11.md:38 +msgid "Improve handling of cloze deletion in TTS mode" +msgstr "" + +#: src/changelog/v2.11.md:39 +msgid "Improve Card Browser search from Android text selection menu" +msgstr "" + +#: src/changelog/v2.11.md:40 +msgid "Improve Card Browser with default hide of media filenames" +msgstr "" + +#: src/changelog/v2.11.md:41 +msgid "Improve Reviewer auto-advance by waiting for TTS to finish" +msgstr "" + +#: src/changelog/v2.11.md:42 +msgid "Improve transparent SVG display in night mode with white background" +msgstr "" + +#: src/changelog/v2.11.md:43 +msgid "Improve anki package import handling" +msgstr "" + +#: src/changelog/v2.11.md:44 +msgid "Improve AnkiWeb login form enter button handling" +msgstr "" + +#: src/changelog/v2.11.md:45 +msgid "Improve hardware back button handling in restore from backup" +msgstr "" + +#: src/changelog/v2.11.md:46 +msgid "Improve Reviewer display of un-rendered LaTeX" +msgstr "" + +#: src/changelog/v2.11.md:47 +msgid "Improve TTS / auto-answer combination, wait for TTS before advance" +msgstr "" + +#: src/changelog/v2.11.md:48 +msgid "Workaround Firefox open downloaded deck bug" +msgstr "" + +#: src/changelog/v2.11.md:49 +msgid "Workaround crash on Samsung devices with >500 deck reminders" +msgstr "" + +#: src/changelog/v2.11.md:50 +msgid "Fix card template editor mistakenly allowing add template on cloze type" +msgstr "" + +#: src/changelog/v2.11.md:51 +msgid "Fix language change preference" +msgstr "" + +#: src/changelog/v2.11.md:52 +msgid "Fix ability to unbury a deck in deck list" +msgstr "" + +#: src/changelog/v2.11.md:53 +msgid "Fix app bar item flicker during review" +msgstr "" + +#: src/changelog/v2.11.md:54 +msgid "Fix V2 scheduler learning card count after undo" +msgstr "" + +#: src/changelog/v2.11.md:55 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/13?closed=1)" +msgstr "" + +#: src/changelog/v2.10.md:1 +msgid "Version 2.10.4 (2020-05-31)" +msgstr "" + +#: src/changelog/v2.10.md:2 +msgid "Workaround expired AnkiWeb SSL Root certificate" +msgstr "" + +#: src/changelog/v2.10.md:3 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/22?closed=1)" +msgstr "" + +#: src/changelog/v2.10.md:5 +msgid "Version 2.10.3 (2020-05-29)" +msgstr "" + +#: src/changelog/v2.10.md:6 +msgid "Fix crash on no permissions on Card Browser system text menu entry" +msgstr "" + +#: src/changelog/v2.10.md:7 +msgid "Fix crash in widget if external storage unmounts" +msgstr "" + +#: src/changelog/v2.10.md:8 +msgid "Fix crash on device reboot if no permissions" +msgstr "" + +#: src/changelog/v2.10.md:9 +msgid "Fix crash if deck picker background image too large" +msgstr "" + +#: src/changelog/v2.10.md:10 +msgid "Fix crash in tags dialog" +msgstr "" + +#: src/changelog/v2.10.md:11 +msgid "Fix bad data generated for null objects (Anki compatibility)" +msgstr "" + +#: src/changelog/v2.10.md:12 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/21?closed=1)" +msgstr "" + +#: src/changelog/v2.10.md:14 +msgid "Version 2.10.2 (2020-05-14)" +msgstr "" + +#: src/changelog/v2.10.md:15 +msgid "Fix type answer cards not rendering correctly" +msgstr "" + +#: src/changelog/v2.10.md:16 +msgid "Fix type answer card template creation on non-English new installs" +msgstr "" + +#: src/changelog/v2.10.md:17 +msgid "Fix frequent full sync caused by incorrect learning card counts" +msgstr "" + +#: src/changelog/v2.10.md:18 +msgid "Fix crash importing into fresh install with no storage permission" +msgstr "" + +#: src/changelog/v2.10.md:20 +msgid "Version 2.10.1 (2020-05-13)" +msgstr "" + +#: src/changelog/v2.10.md:21 +msgid "Updated all translations from crowdin translators" +msgstr "" + +#: src/changelog/v2.10.md:22 +msgid "Fix crash note editor on rapid back button" +msgstr "" + +#: src/changelog/v2.10.md:23 +msgid "Fix crash from incorrect Thai translation" +msgstr "" + +#: src/changelog/v2.10.md:25 +msgid "Version 2.10 (2020-05-12)" +msgstr "" + +#: src/changelog/v2.10.md:26 +msgid "Add welcome dialog explaining need for storage permission" +msgstr "" + +#: src/changelog/v2.10.md:27 +msgid "Add support for Flags on cards (including flagging by gesture)" +msgstr "" + +#: src/changelog/v2.10.md:28 +msgid "Add ability to set background image in Deck Picker" +msgstr "" + +#: src/changelog/v2.10.md:29 +msgid "Add localization of standard templates created in fresh install" +msgstr "" + +#: src/changelog/v2.10.md:30 +msgid "Add support for card javascript to reload current card programmatically" +msgstr "" + +#: src/changelog/v2.10.md:31 +msgid "Add support for restricted learning / classroom devices" +msgstr "" + +#: src/changelog/v2.10.md:32 +msgid "Add preference to disable \"Extended Text UI\" full-screen editor" +msgstr "" + +#: src/changelog/v2.10.md:33 +msgid "Add CSS style capability to heavy checkmark and down arrow in card" +msgstr "" + +#: src/changelog/v2.10.md:34 +msgid "Add display of current interval on reschedule dialog" +msgstr "" + +#: src/changelog/v2.10.md:35 +msgid "Add support for card javascript to answer cards programmatically" +msgstr "" + +#: src/changelog/v2.10.md:36 +msgid "Add ability to toggle sticky field in field editor" +msgstr "" + +#: src/changelog/v2.10.md:37 +msgid "Improve deck list newline, style, script tag handling in deck descriptions" +msgstr "" + +#: src/changelog/v2.10.md:38 +msgid "Improve whiteboard on/off state handling, especially between day/night mode" +msgstr "" + +#: src/changelog/v2.10.md:39 +msgid "Improve multi-selection options in CardBrowser" +msgstr "" + +#: src/changelog/v2.10.md:40 +msgid "Improve performance (systematic optimization process, lots of improvements!)" +msgstr "" + +#: src/changelog/v2.10.md:41 +msgid "Improve handling of erroneous notes (missing fields, improper clozes)" +msgstr "" + +#: src/changelog/v2.10.md:42 +msgid "Improve user messaging on network connection failures" +msgstr "" + +#: src/changelog/v2.10.md:43 +msgid "Improve counting of suspended/buried cards in advanced statistics" +msgstr "" + +#: src/changelog/v2.10.md:44 +msgid "Improve v2 scheduler compatibility with Anki ecosystem" +msgstr "" + +#: src/changelog/v2.10.md:45 +msgid "Improve handling / detection of full sync need" +msgstr "" + +#: src/changelog/v2.10.md:46 +msgid "Improve Anki compatibility by allowing more field/model/deck name characters" +msgstr "" + +#: src/changelog/v2.10.md:47 +msgid "Improve deck list estimated review times with human scale times" +msgstr "" + +#: src/changelog/v2.10.md:48 +msgid "Fix text scaling bug in card browser" +msgstr "" + +#: src/changelog/v2.10.md:49 +msgid "Fix crash in export while using v2 scheduler" +msgstr "" + +#: src/changelog/v2.10.md:50 +msgid "Fix Custom Tabs crash with non-default system web browser" +msgstr "" + +#: src/changelog/v2.10.md:51 +msgid "Fix issues with import of packages with long Unicode names" +msgstr "" + +#: src/changelog/v2.10.md:52 +msgid "Fix incorrect intervals on lapsed filtered v2 scheduler cards" +msgstr "" + +#: src/changelog/v2.10.md:53 +msgid "Fix multimedia editor save/cancel behavior" +msgstr "" + +#: src/changelog/v2.10.md:54 +msgid "Fix incorrect button/gesture availability while existing task is still active" +msgstr "" + +#: src/changelog/v2.10.md:55 +msgid "Fix type answer crash on invalid characters" +msgstr "" + +#: src/changelog/v2.10.md:56 +msgid "Fix cloze references not being recognized in all fields" +msgstr "" + +#: src/changelog/v2.10.md:57 +msgid "Fix invalid ability to change deck to a filtered deck" +msgstr "" + +#: src/changelog/v2.10.md:58 +msgid "Fix crashes on adding invalid images, audios, and videos" +msgstr "" + +#: src/changelog/v2.10.md:59 +msgid "Fix CardBrowser crash after deleting card" +msgstr "" + +#: src/changelog/v2.10.md:60 +msgid "Fix crash and help user if no browser detected" +msgstr "" + +#: src/changelog/v2.10.md:61 +msgid "Fix Reviewer crash if card not available" +msgstr "" + +#: src/changelog/v2.10.md:62 +msgid "Fix crash / improve import of pasted decks" +msgstr "" + +#: src/changelog/v2.10.md:63 +msgid "Fix clicking hint field blocks key input in Reviewer" +msgstr "" + +#: src/changelog/v2.10.md:64 +msgid "Fix Previewer forgetting which card to show on device rotation" +msgstr "" + +#: src/changelog/v2.10.md:65 +msgid "Fix Mathjax/cloze interactions" +msgstr "" + +#: src/changelog/v2.10.md:66 +msgid "Fix vertical alignment of touch area in full-screen review" +msgstr "" + +#: src/changelog/v2.10.md:67 +msgid "Fix handling of ':::' in deck names" +msgstr "" + +#: src/changelog/v2.10.md:68 +msgid "Fix incorrect display of HTML comments in card browser" +msgstr "" + +#: src/changelog/v2.9.md:1 +msgid "Version 2.9.7 (2020-04-30)" +msgstr "" + +#: src/changelog/v2.9.md:2 +msgid "Fix crash / workaround deck options timer config regression in AnkiDesktop" +msgstr "" + +#: src/changelog/v2.9.md:4 +msgid "Version 2.9.6 (2020-04-03)" +msgstr "" + +#: src/changelog/v2.9.md:5 +msgid "Fix multimedia crashes (permissions handling, image add, preview)" +msgstr "" + +#: src/changelog/v2.9.md:6 +msgid "Fix UI and crashes in database check (user dialog + exception handling)" +msgstr "" + +#: src/changelog/v2.9.md:7 +msgid "Fix Windows 10 image compatibility issue with image paths" +msgstr "" + +#: src/changelog/v2.9.md:8 +msgid "Fix AnkiDesktop sync compatibility issue if more than 1000 cards due" +msgstr "" + +#: src/changelog/v2.9.md:9 +msgid "Fix crash in card browser render" +msgstr "" + +#: src/changelog/v2.9.md:10 +msgid "Fix parsing of image tags in card browser" +msgstr "" + +#: src/changelog/v2.9.md:11 +msgid "Fix crash in StudyOptionsFragment" +msgstr "" + +#: src/changelog/v2.9.md:12 +msgid "Fix issue with deck options group changing on export" +msgstr "" + +#: src/changelog/v2.9.md:13 +msgid "Fix issue with exports containing unexpected media" +msgstr "" + +#: src/changelog/v2.9.md:14 +msgid "Fix issue with dynamic decks (crash fix, export fix)" +msgstr "" + +#: src/changelog/v2.9.md:15 +msgid "Fix high frequency issue \"AnkiDroid directory is inaccessible\"" +msgstr "" + +#: src/changelog/v2.9.md:16 +msgid "Fix high frequency WebView (card viewer) crash" +msgstr "" + +#: src/changelog/v2.9.md:17 +msgid "Add columns to card browser (due, ease, changed, created, edited)" +msgstr "" + +#: src/changelog/v2.9.md:18 +msgid "Fix card scheduler not respecting maximum intervals" +msgstr "" + +#: src/changelog/v2.9.md:19 +msgid "Fix card browser spins forever on images or empty strings" +msgstr "" + +#: src/changelog/v2.9.md:21 +msgid "Version 2.9.5 (2020-03-15)" +msgstr "" + +#: src/changelog/v2.9.md:22 +msgid "Fix crash rendering card list while updating card browser search" +msgstr "" + +#: src/changelog/v2.9.md:23 +msgid "Fix case-sensitivity issue with pronunciation words not being found" +msgstr "" + +#: src/changelog/v2.9.md:24 +msgid "Fix crash caused by auto-sync on startup showing dialog too soon" +msgstr "" + +#: src/changelog/v2.9.md:25 +msgid "Fix crash on preview of TTS cards showing language selectiond dialog too slowly" +msgstr "" + +#: src/changelog/v2.9.md:26 +msgid "Fix crash on import if collection not found" +msgstr "" + +#: src/changelog/v2.9.md:27 +msgid "Fix Anki ecosystem deck configuration issue for Anki Desktop users \\<= 2.16" +msgstr "" + +#: src/changelog/v2.9.md:28 +msgid "Fix crash if user attempts to open camera or gallery and no app is available" +msgstr "" + +#: src/changelog/v2.9.md:29 +msgid "Fix crash building deck reminders while deck is synchronizing" +msgstr "" + +#: src/changelog/v2.9.md:30 +msgid "Fix crash related to audio recording stop" +msgstr "" + +#: src/changelog/v2.9.md:31 +msgid "Show helpful messages if import fails because device is out of space" +msgstr "" + +#: src/changelog/v2.9.md:32 +msgid "Fix crash when taking pictures on devices with Lollipop and older" +msgstr "" + +#: src/changelog/v2.9.md:34 +msgid "Version 2.9.4 (2020-02-18)" +msgstr "" + +#: src/changelog/v2.9.md:35 +msgid "Fix crash when fetching pronunciations in note editor" +msgstr "" + +#: src/changelog/v2.9.md:36 +msgid "Fix issue with pronunciation words not being found" +msgstr "" + +#: src/changelog/v2.9.md:37 +msgid "Fix crash on startup for users with auto-sync on startup" +msgstr "" + +#: src/changelog/v2.9.md:38 +msgid "Fix crash on deck import when app is in background" +msgstr "" + +#: src/changelog/v2.9.md:39 +msgid "Fix crash for users of Google Chrome Canary" +msgstr "" + +#: src/changelog/v2.9.md:40 +msgid "Fix crash when adding certain audio clips" +msgstr "" + +#: src/changelog/v2.9.md:41 +msgid "Fix crash related to fetching Sound metadata" +msgstr "" + +#: src/changelog/v2.9.md:42 +msgid "Fix issue where audio plays twice" +msgstr "" + +#: src/changelog/v2.9.md:44 +msgid "Version 2.9.3 (2020-02-09)" +msgstr "" + +#: src/changelog/v2.9.md:45 +msgid "Fix issues with connection timeouts and new encryption library" +msgstr "" + +#: src/changelog/v2.9.md:46 +msgid "Fix incorrect handling of decks with ':::' in their name" +msgstr "" + +#: src/changelog/v2.9.md:48 +msgid "Version 2.9.2 (2020-02-03)" +msgstr "" + +#: src/changelog/v2.9.md:49 +msgid "Add support for new AnkiWeb encryption changes" +msgstr "" + +#: src/changelog/v2.9.md:50 +msgid "Fix some bugs using filtered decks" +msgstr "" + +#: src/changelog/v2.9.md:51 +msgid "Fix crash on app startup with uninitialized collection" +msgstr "" + +#: src/changelog/v2.9.md:52 +msgid "Fix some issues with new cloze deletion menu" +msgstr "" + +#: src/changelog/v2.9.md:53 +msgid "Fix issue with Mathjax + cloze deletion" +msgstr "" + +#: src/changelog/v2.9.md:54 +msgid "Fix incorrect intervals bug with new scheduler" +msgstr "" + +#: src/changelog/v2.9.md:55 +msgid "Add various patches from Anki Desktop" +msgstr "" + +#: src/changelog/v2.9.md:57 +msgid "Version 2.9.1 (2019-10-16)" +msgstr "" + +#: src/changelog/v2.9.md:58 +msgid "Fix crash reviewing on Android 5 - 7" +msgstr "" + +#: src/changelog/v2.9.md:59 +msgid "Fix crash on Hungarian translation" +msgstr "" + +#: src/changelog/v2.9.md:61 +msgid "Version 2.9 (2019-10-14)" +msgstr "" + +#: src/changelog/v2.9.md:62 +msgid "Change to new adaptive icon" +msgstr "" + +#: src/changelog/v2.9.md:63 +msgid "Add multi-select in the card browser (delete, change deck, reschedule)" +msgstr "" + +#: src/changelog/v2.9.md:64 +msgid "Add support for new Anki 2.1 scheduler" +msgstr "" + +#: src/changelog/v2.9.md:65 +msgid "Add support for Mathjax" +msgstr "" + +#: src/changelog/v2.9.md:66 +msgid "Add ability to add local audio files to notes" +msgstr "" + +#: src/changelog/v2.9.md:67 +msgid "Add ability to specify filename and folder on export and import" +msgstr "" + +#: src/changelog/v2.9.md:68 +msgid "Add ability to insert cloze in Note Editor" +msgstr "" + +#: src/changelog/v2.9.md:69 +msgid "Add ability to reposition cards " +msgstr "" + +#: src/changelog/v2.9.md:70 +msgid "Add ability to use due reminders for specific decks" +msgstr "" + +#: src/changelog/v2.9.md:71 +msgid "Add support for gamepad input when reviewing" +msgstr "" + +#: src/changelog/v2.9.md:72 +msgid "Add support for common keyboard shortcuts from Anki Desktop" +msgstr "" + +#: src/changelog/v2.9.md:73 +msgid "Add ability to search in Card Browser for text from system context menu" +msgstr "" + +#: src/changelog/v2.9.md:74 +msgid "Add ability to recognize tts HTML elements in questions and answers" +msgstr "" + +#: src/changelog/v2.9.md:75 +msgid "Add ability to display LaTeX rendered to SVG (vs PNG) from Anki Desktop" +msgstr "" + +#: src/changelog/v2.9.md:76 +msgid "Add confirmation check for full sync trigger in preferences" +msgstr "" + +#: src/changelog/v2.9.md:77 +msgid "Fix excessive pull-to-sync false positives. Disable when not at top of page." +msgstr "" + +#: src/changelog/v2.9.md:78 +msgid "Fix some issues with focus in Note Editor" +msgstr "" + +#: src/changelog/v2.9.md:79 +msgid "Fix media sync errors related to file creation issues" +msgstr "" + +#: src/changelog/v2.9.md:80 +msgid "Fix crash related to use of camera without permission or no camera hardware " +msgstr "" + +#: src/changelog/v2.9.md:81 +msgid "Fix crash related to Card Browser allowing preview with no cards selected" +msgstr "" + +#: src/changelog/v2.9.md:82 +msgid "Fix crash in Reviewer when collection inaccessible" +msgstr "" + +#: src/changelog/v2.9.md:83 +msgid "Fix crash related to TTS when TTS not initialized" +msgstr "" + +#: src/changelog/v2.9.md:84 +msgid "Fix crash related to sdcard mount/unmount on inaccessible collection" +msgstr "" + +#: src/changelog/v2.9.md:85 +msgid "Fix crash related to audio button being visible after loading pronunciation media" +msgstr "" + +#: src/changelog/v2.9.md:86 +msgid "Fix crash when attempting to import invalid zip files " +msgstr "" + +#: src/changelog/v2.9.md:87 +msgid "Fix crash related to switching from split-window mode to single-window mode" +msgstr "" + +#: src/changelog/v2.9.md:88 +msgid "Fix crash related to missing preferences in Preference editor" +msgstr "" + +#: src/changelog/v2.9.md:89 +msgid "Fix crash on deck selection after deleting a deck and immediately closing app" +msgstr "" + +#: src/changelog/v2.9.md:90 +msgid "Fix crash in Reviewer when non-standard browser installed" +msgstr "" + +#: src/changelog/v2.9.md:91 +msgid "Fix type-answer field showing unexpectedly after undo in Reviewer" +msgstr "" + +#: src/changelog/v2.9.md:92 +msgid "Fix incorrect display of some characters when using type-answer" +msgstr "" + +#: src/changelog/v2.9.md:93 +msgid "Fix error related to media in subfolders not showing in Reviewer" +msgstr "" + +#: src/changelog/v2.9.md:94 +msgid "Fix some issues with generated flashcard html and CSS selectors" +msgstr "" + +#: src/changelog/v2.9.md:95 +msgid "Fix some Glosbe and Beolingus regressions" +msgstr "" + +#: src/changelog/v2.9.md:96 +msgid "Fix issue where new deck was created when note type was renamed" +msgstr "" + +#: src/changelog/v2.9.md:97 +msgid "Fix add note button disappearing from Card Browser when returning from search" +msgstr "" + +#: src/changelog/v2.9.md:98 +msgid "Fix some statistics display issues " +msgstr "" + +#: src/changelog/v2.9.md:99 +msgid "Fix incorrect display of some preferences" +msgstr "" + +#: src/changelog/v2.9.md:100 +msgid "Fix invisible notification bar in NoteEditor" +msgstr "" + +#: src/changelog/v2.9.md:101 +msgid "Fix newline characters not working in cloze deletions" +msgstr "" + +#: src/changelog/v2.9.md:102 +msgid "Increase max card count display from 1000 to 99999" +msgstr "" + +#: src/changelog/v2.9.md:103 +msgid "Improve display handling of very long review intervals (> 68 years)" +msgstr "" + +#: src/changelog/v2.9.md:104 +msgid "Improve next/back buttons when using Previewer on multiple cards" +msgstr "" + +#: src/changelog/v2.9.md:105 +msgid "Improve handling of selected deck between statistics, card browser and deck picker" +msgstr "" + +#: src/changelog/v2.9.md:106 +msgid "Improve Card Browser search by restoring when returning from other activities" +msgstr "" + +#: src/changelog/v2.9.md:107 +msgid "Improve card focus handling when moving between Note Editor and Card Template Editor" +msgstr "" + +#: src/changelog/v2.9.md:108 +msgid "Improve labeling of deck-group vs deck-specific options" +msgstr "" + +#: src/changelog/v2.9.md:109 +msgid "Improve formatting of HTTP error codes during sync" +msgstr "" + +#: src/changelog/v2.9.md:110 +msgid "Improve handling of multi-touch events while whiteboard displayed" +msgstr "" + +#: src/changelog/v2.9.md:111 +msgid "Improve permission dialog descriptions" +msgstr "" + +#: src/changelog/v2.9.md:112 +msgid "Improve handling of \"preview new cards\" setting when creating custom study deck" +msgstr "" + +#: src/changelog/v2.9.md:113 +msgid "Improve Navigation Drawer performance on older devices" +msgstr "" + +#: src/changelog/v2.9.md:114 +msgid "Improve database check dialog with addition progress updates during check" +msgstr "" + +#: src/changelog/v2.9.md:115 +msgid "Use different notification channels for study reminders and general notifications" +msgstr "" + +#: src/changelog/v2.9.md:116 +msgid "Drop support for Android \\< Ice Cream Sandwich MR1 (API15, Android 4.0.3)" +msgstr "" + +#: src/changelog/v2.9.md:117 +msgid "Add support for more features on Chromebook (import, export, restore backup, camera)" +msgstr "" + +#: src/changelog/v2.9.md:118 +msgid "Add API support for card/note bury and suspend" +msgstr "" + +#: src/changelog/v2.9.md:119 +msgid "Add API to open Reviewer on specific decks from other apps" +msgstr "" + +#: src/changelog/v2.9.md:120 +msgid "Add support for HTML/Javascript debugging" +msgstr "" + +#: src/changelog/v2.9.md:121 +msgid "Add link to third party apps which support AnkiDroid API in advanced preferences" +msgstr "" + +#: src/changelog/v2.9.md:122 +msgid "Fix issue with custom sync server certificates" +msgstr "" + +#: src/changelog/v2.9.md:123 +msgid "Perform basic DB integrity check on app upgrade" +msgstr "" + +#: src/changelog/v2.9.md:124 +msgid "Introduce optional analytics reporting" +msgstr "" + +#: src/changelog/v2.8.md:1 +msgid "Version 2.8.4 (2018-04-27)" +msgstr "" + +#: src/changelog/v2.8.md:2 +msgid "Fix error syncing due to too many card templates" +msgstr "" + +#: src/changelog/v2.8.md:4 +msgid "Version 2.8.3 (2017-11-10)" +msgstr "" + +#: src/changelog/v2.8.md:5 +msgid "Fix crash adding a picture from camera" +msgstr "" + +#: src/changelog/v2.8.md:6 +msgid "Fix add note icon disappearing in browser after search" +msgstr "" + +#: src/changelog/v2.8.md:7 +msgid "Fix translations from Glosbe" +msgstr "" + +#: src/changelog/v2.8.md:8 +msgid "Fix crash long-tapping when no deck is selected" +msgstr "" + +#: src/changelog/v2.8.md:9 +msgid "Fix crash entering advanced settings on some devices" +msgstr "" + +#: src/changelog/v2.8.md:10 +msgid "Fix incorrect graph display in statistics" +msgstr "" + +#: src/changelog/v2.8.md:11 +msgid "Fix deck not changing properly in statistics" +msgstr "" + +#: src/changelog/v2.8.md:12 +msgid "Fix rounding error in statistics weekly breakdown" +msgstr "" + +#: src/changelog/v2.8.md:13 +msgid "Fix spurious new deck created on model rename" +msgstr "" + +#: src/changelog/v2.8.md:14 +msgid "Improve error message on exception during media sync" +msgstr "" + +#: src/changelog/v2.8.md:15 +msgid "Improve animation when transitioning between screens" +msgstr "" + +#: src/changelog/v2.8.md:16 +msgid "Use a round icon on devices that support it" +msgstr "" + +#: src/changelog/v2.8.md:18 +msgid "Version 2.8.2 (2017-02-28)" +msgstr "" + +#: src/changelog/v2.8.md:19 +msgid "Fix bugs showing confirmation dialogs in various places" +msgstr "" + +#: src/changelog/v2.8.md:20 +msgid "Fix uncommon crash showing dialog after sync" +msgstr "" + +#: src/changelog/v2.8.md:22 +msgid "Version 2.8.1 (2017-02-06)" +msgstr "" + +#: src/changelog/v2.8.md:23 +msgid "Allow sending exported apkg to arbitrary app (e.g. Google Drive)" +msgstr "" + +#: src/changelog/v2.8.md:24 +msgid "Allow AnkiWeb to display a warning on sync completion" +msgstr "" + +#: src/changelog/v2.8.md:25 +msgid "Fix potential full-sync after sync cancellation" +msgstr "" + +#: src/changelog/v2.8.md:26 +msgid "Fix media sync sometimes scanning all files again" +msgstr "" + +#: src/changelog/v2.8.md:27 +msgid "Fix removing $ character when importing media files" +msgstr "" + +#: src/changelog/v2.8.md:28 +msgid "Improve automatic card answer timing when audio is played" +msgstr "" + +#: src/changelog/v2.8.md:29 +msgid "Improve rendering of some statistics" +msgstr "" + +#: src/changelog/v2.8.md:30 +msgid "Fix some crashes in the Russian, Vietnamese, and Chinese translations" +msgstr "" + +#: src/changelog/v2.8.md:31 +msgid "Fix crash sending exported apkg by email. NB: Export path can no longer be modified." +msgstr "" + +#: src/changelog/v2.7.md:1 +msgid "Version 2.7 (2016-10-16)" +msgstr "" + +#: src/changelog/v2.7.md:2 +msgid "Add pull-to-sync feature" +msgstr "" + +#: src/changelog/v2.7.md:3 +msgid "Add option to place answer buttons at the top" +msgstr "" + +#: src/changelog/v2.7.md:4 +msgid "Add widget to directly access \"Add note\" screen" +msgstr "" + +#: src/changelog/v2.7.md:5 +msgid "Fix issue with importing whole collections and restoring backups" +msgstr "" + +#: src/changelog/v2.7.md:6 +msgid "Fix deck import failing after the first successful one" +msgstr "" + +#: src/changelog/v2.7.md:7 +msgid "Fix cards in learning queue not being randomized" +msgstr "" + +#: src/changelog/v2.7.md:8 +msgid "Fix crash with fullscreen mode and hidden answer buttons" +msgstr "" + +#: src/changelog/v2.7.md:9 +msgid "Fix rare crash when opening deck options" +msgstr "" + +#: src/changelog/v2.7.md:10 +msgid "Improve support with TalkBack" +msgstr "" + +#: src/changelog/v2.6.md:1 +msgid "Version 2.6.1 (2016-07-08)" +msgstr "" + +#: src/changelog/v2.6.md:2 +msgid "Add card cycling in previewer (similar to desktop client)" +msgstr "" + +#: src/changelog/v2.6.md:3 +msgid "Add option to hide 'minutes left' in reviewer" +msgstr "" + +#: src/changelog/v2.6.md:4 +msgid "Fix language from app setting not always being used" +msgstr "" + +#: src/changelog/v2.6.md:5 +msgid "Fix not being able to play back new sound recording" +msgstr "" + +#: src/changelog/v2.6.md:6 +msgid "Fix potential crash on Android 2.3 (Gingerbread)" +msgstr "" + +#: src/changelog/v2.6.md:7 +msgid "Improved use of horizontal space when resizing large images" +msgstr "" + +#: src/changelog/v2.6.md:8 +msgid "Minor adjustment to black theme colors" +msgstr "" + +#: src/changelog/v2.6.md:10 +msgid "Version 2.6 (2016-06-14)" +msgstr "" + +#: src/changelog/v2.6.md:11 +msgid "Add two new themes (black, plain), selectable in preferences" +msgstr "" + +#: src/changelog/v2.6.md:12 +msgid "Make reviewer app bar icons customizable" +msgstr "" + +#: src/changelog/v2.6.md:13 +msgid "Split \"hide / delete\" menu in reviewer into \"bury\", \"suspend\", \"delete note\"" +msgstr "" + +#: src/changelog/v2.6.md:14 +msgid "Reviewer undo button now removes last stroke when whiteboard in use" +msgstr "" + +#: src/changelog/v2.6.md:15 +msgid "Add menu entry to change TTS language from reviewer" +msgstr "" + +#: src/changelog/v2.6.md:16 +msgid "Add more of the statistics available on the desktop client" +msgstr "" + +#: src/changelog/v2.6.md:17 +msgid "Add \"advanced statistics\" plugin (must be enabled in advanced settings)" +msgstr "" + +#: src/changelog/v2.6.md:18 +msgid "Add setting to configure custom sync server (advanced)" +msgstr "" + +#: src/changelog/v2.6.md:19 +msgid "Fix card templates created in AnkiDroid incorrectly using bold style" +msgstr "" + +#: src/changelog/v2.6.md:20 +msgid "Fix many importing issues (behavior now consistent with the desktop client)" +msgstr "" + +#: src/changelog/v2.6.md:21 +msgid "Fix long-tapping card in browser not always working" +msgstr "" + +#: src/changelog/v2.6.md:22 +msgid "Update sound playback button image" +msgstr "" + +#: src/changelog/v2.6.md:23 +msgid "Reduce size of whiteboard and gesture area for better interoperability with full screen" +msgstr "" + +#: src/changelog/v2.6.md:24 +msgid "Improve error messages with inaccessible collections" +msgstr "" + +#: src/changelog/v2.6.md:25 +msgid "Allow auto-play of HTML media elements (for templates that enable it)" +msgstr "" + +#: src/changelog/v2.6.md:26 +msgid "Significant updates to the content provider and API (for developers; see documentation)" +msgstr "" + +#: src/changelog/v2.6.md:27 +msgid "Many small bug fixes, improvements, theme adjustments, translation updates" +msgstr "" + +#: src/changelog/v2.5.md:1 +msgid "Version 2.5.4 (2015-12-14)" +msgstr "" + +#: src/changelog/v2.5.md:2 +msgid "Fix background color in overflow menu of deck picker" +msgstr "" + +#: src/changelog/v2.5.md:4 +msgid "Version 2.5.3 (2015-12-14)" +msgstr "" + +#: src/changelog/v2.5.md:5 +msgid "Fix floating action button (blue +) interfering with deck list on Android 2.3" +msgstr "" + +#: src/changelog/v2.5.md:6 +msgid "Fix opening apkg files from Gmail" +msgstr "" + +#: src/changelog/v2.5.md:7 +msgid "Fix automatic playback of consecutive videos" +msgstr "" + +#: src/changelog/v2.5.md:8 +msgid "Add a new launch screen" +msgstr "" + +#: src/changelog/v2.5.md:9 +msgid "Improve behaviour surrounding the deck overview screen" +msgstr "" + +#: src/changelog/v2.5.md:10 +msgid "Multiple media files can now be added to one field in the note editor" +msgstr "" + +#: src/changelog/v2.5.md:11 +msgid "Don't include unused media files on export" +msgstr "" + +#: src/changelog/v2.5.md:12 +msgid "Undo behaviour is now consistent with the desktop client (can no longer undo note edits)" +msgstr "" + +#: src/changelog/v2.5.md:13 +msgid "Enhancements to sync canceling" +msgstr "" + +#: src/changelog/v2.5.md:14 +msgid "Minor performance enhancements, crash fixes, and UI tweaks" +msgstr "" + +#: src/changelog/v2.5.md:16 +msgid "Version 2.5.2 (2015-12-04)" +msgstr "" + +#: src/changelog/v2.5.md:17 +msgid "Fix start-up crashes on Samsung devices running Android 4.2" +msgstr "" + +#: src/changelog/v2.5.md:18 +msgid "Fix crash for new users on Android 6.0" +msgstr "" + +#: src/changelog/v2.5.md:19 +msgid "Reverted to old typing method. The new method is now an option which is off by default." +msgstr "" + +#: src/changelog/v2.5.md:20 +msgid "You can now click on the numbers in the right-most part of the deck list to open the deck overview screen" +msgstr "" + +#: src/changelog/v2.5.md:21 +msgid "Various fixes to transition animations and progress bars" +msgstr "" + +#: src/changelog/v2.5.md:22 +msgid "Add option to remove empty cards (previously only possible on desktop)" +msgstr "" + +#: src/changelog/v2.5.md:23 +msgid "Remove: Google Translate filter. In practice, this feature had no effect and is not required" +msgstr "" + +#: src/changelog/v2.5.md:24 +msgid "Remove: Google image search for multimedia card. The image search API has been discontinued by Google and no longer works" +msgstr "" + +#: src/changelog/v2.5.md:26 +msgid "Version 2.5.1 (2015-12-01)" +msgstr "" + +#: src/changelog/v2.5.md:27 +msgid "Fix crash when loading deck list (could not open collection bug)" +msgstr "" + +#: src/changelog/v2.5.md:28 +msgid "Fix visible progress bar showing when answering card" +msgstr "" + +#: src/changelog/v2.5.md:30 +msgid "Version 2.5 (2015-11-30)" +msgstr "" + +#: src/changelog/v2.5.md:31 +msgid "Redesign of user interface to use material design" +msgstr "" + +#: src/changelog/v2.5.md:32 +msgid "Add new dark theme" +msgstr "" + +#: src/changelog/v2.5.md:33 +msgid "Simplify the study process by bypassing deck overview screen" +msgstr "" + +#: src/changelog/v2.5.md:34 +msgid "Add ability to add, edit, delete note types" +msgstr "" + +#: src/changelog/v2.5.md:35 +msgid "Add setting to enable auto-sync and a Tasker intent to trigger sync" +msgstr "" + +#: src/changelog/v2.5.md:36 +msgid "Replace \"instant add\" feature with new API for 3rd party apps to add cards directly to AnkiDroid" +msgstr "" + +#: src/changelog/v2.5.md:37 +msgid "\"Type in the answer\" input box now built into the card html itself" +msgstr "" + +#: src/changelog/v2.5.md:38 +msgid "Make fullscreen-mode immersive and added setting to hide answer buttons when using gestures" +msgstr "" + +#: src/changelog/v2.5.md:39 +msgid "Add css class for customizing card background color when night mode is enabled" +msgstr "" + +#: src/changelog/v2.5.md:40 +msgid "Allow changing media volume from the deck picker" +msgstr "" + +#: src/changelog/v2.5.md:41 +msgid "Add ability to save and view common searches in the card browser" +msgstr "" + +#: src/changelog/v2.5.md:42 +msgid "Browser now shows full question and answer in the results by default" +msgstr "" + +#: src/changelog/v2.5.md:43 +msgid "Only show tags relevant to that deck when doing custom study by tag" +msgstr "" + +#: src/changelog/v2.5.md:44 +msgid "Fix some bugs in the widget" +msgstr "" + +#: src/changelog/v2.5.md:45 +msgid "Remove \"simple interface\"" +msgstr "" + +#: src/changelog/v2.5.md:46 +msgid "Remove support for Android version 2.1 and 2.2 (minimum is now 2.3.3)" +msgstr "" + +#: src/changelog/v2.5.md:47 +msgid "Add support for Android 6 Marshmallow" +msgstr "" + +#: src/changelog/v2.5.md:48 +msgid "Disable write-ahead-logging in sqlite database" +msgstr "" + +#: src/changelog/v2.5.md:49 +msgid "Many other bug fixes and small improvements" +msgstr "" + +#: src/changelog/v2.4.md:1 +msgid "Version 2.4.4 (2015-10-20)" +msgstr "" + +#: src/changelog/v2.4.md:2 +msgid "Fix playback of sound files with apostrophes in file name" +msgstr "" + +#: src/changelog/v2.4.md:3 +msgid "Fix new card siblings not being buried for the same day" +msgstr "" + +#: src/changelog/v2.4.md:4 +msgid "Fix media on cards when using the Hebrew Fix option" +msgstr "" + +#: src/changelog/v2.4.md:5 +msgid "Fix crashes related to \"Relative overdueness\" and make this sort order available on AnkiDroid" +msgstr "" + +#: src/changelog/v2.4.md:6 +msgid "When mixing new and review cards, make their rotation more consistent with desktop" +msgstr "" + +#: src/changelog/v2.4.md:8 +msgid "Version 2.4.3 (2015-04-21)" +msgstr "" + +#: src/changelog/v2.4.md:9 +msgid "Fix \"unknown field\" bug" +msgstr "" + +#: src/changelog/v2.4.md:10 +msgid "Fix crash showing welcome screen on Android 2.3" +msgstr "" + +#: src/changelog/v2.4.md:11 +msgid "Fix crash caused by widget" +msgstr "" + +#: src/changelog/v2.4.md:12 +msgid "Fix rare crash in browser" +msgstr "" + +#: src/changelog/v2.4.md:13 +msgid "Fix a couple of sync issues" +msgstr "" + +#: src/changelog/v2.4.md:14 +msgid "Fix crash starting AnkiDroid on a small number of devices" +msgstr "" + +#: src/changelog/v2.4.md:15 src/changelog/v2.4.md:29 +msgid "Update translations" +msgstr "" + +#: src/changelog/v2.4.md:17 +msgid "Version 2.4.2 (2015-03-18)" +msgstr "" + +#: src/changelog/v2.4.md:18 +msgid "Fix some bugs with cloze templates" +msgstr "" + +#: src/changelog/v2.4.md:19 +msgid "Fix a translation error" +msgstr "" + +#: src/changelog/v2.4.md:21 +msgid "Version 2.4.1 (2015-03-15)" +msgstr "" + +#: src/changelog/v2.4.md:22 +msgid "Fix some bugs with filtered decks" +msgstr "" + +#: src/changelog/v2.4.md:23 +msgid "Improve importing of shared decks" +msgstr "" + +#: src/changelog/v2.4.md:24 +msgid "Open settings if AnkiDroid dir inaccessible" +msgstr "" + +#: src/changelog/v2.4.md:25 +msgid "Fix a bug with zooming" +msgstr "" + +#: src/changelog/v2.4.md:26 +msgid "Fix a bug where old card was still shown in reviewer after changing deck" +msgstr "" + +#: src/changelog/v2.4.md:27 +msgid "Fix some issues with cloze deletion" +msgstr "" + +#: src/changelog/v2.4.md:28 +msgid "Fix various crashes" +msgstr "" + +#: src/changelog/v2.4.md:31 +msgid "Version 2.4 (2015-01-28)" +msgstr "" + +#: src/changelog/v2.4.md:32 +msgid "Move \"preview\" feature to browser" +msgstr "" + +#: src/changelog/v2.4.md:33 +msgid "Add ability to change note type of existing flashcards" +msgstr "" + +#: src/changelog/v2.4.md:34 +msgid "Add ability to view and delete card templates" +msgstr "" + +#: src/changelog/v2.4.md:35 +msgid "Fix TTS for most devices" +msgstr "" + +#: src/changelog/v2.4.md:36 +msgid "Support playback of videos (see supported formats [here](http://developer.android.com/guide/appendix/media-formats.html))" +msgstr "" + +#: src/changelog/v2.4.md:37 +msgid "Improve rendering of second column in browser" +msgstr "" + +#: src/changelog/v2.4.md:38 +msgid "Improve detection of swipe gestures" +msgstr "" + +#: src/changelog/v2.4.md:39 +msgid "Increase number of languages in Glosbe translator" +msgstr "" + +#: src/changelog/v2.4.md:40 +msgid "Add support for Chromebooks" +msgstr "" + +#: src/changelog/v2.4.md:41 +msgid "New crash report system" +msgstr "" + +#: src/changelog/v2.4.md:42 +msgid "Bug fixes" +msgstr "" + +#: src/changelog/v2.3.md:1 +msgid "Version 2.3.2 (2014-11-06)" +msgstr "" + +#: src/changelog/v2.3.md:2 +msgid "Bug fixes: Sync, TTS, Remote images, Advanced editor, Export" +msgstr "" + +#: src/changelog/v2.3.md:3 +msgid "Note: This is the last version of AnkiDroid supported by AnkiWeb. Previous versions will not sync." +msgstr "" + +#: src/changelog/v2.3.md:5 +msgid "Version 2.3 (2014-10-27)" +msgstr "" + +#: src/changelog/v2.3.md:6 +msgid "Add new user manual" +msgstr "" + +#: src/changelog/v2.3.md:7 +msgid "Make statistics identical to Anki Desktop" +msgstr "" + +#: src/changelog/v2.3.md:8 +msgid "Fixes to media sync" +msgstr "" + +#: src/changelog/v2.3.md:9 +msgid "Fix bug where images were not showing" +msgstr "" + +#: src/changelog/v2.3.md:10 +msgid "Change layout of note editor" +msgstr "" + +#: src/changelog/v2.3.md:11 +msgid "Add new disable whiteboard option to reviewer and update icons" +msgstr "" + +#: src/changelog/v2.3.md:12 +msgid "Add full support for APKG export and import" +msgstr "" + +#: src/changelog/v2.3.md:13 +msgid "Add feature to email exported APKG" +msgstr "" + +#: src/changelog/v2.3.md:14 +msgid "Increase default number of backups and use APKG" +msgstr "" + +#: src/changelog/v2.3.md:15 +msgid "Make preview card accessible from card browser" +msgstr "" + +#: src/changelog/v2.3.md:16 +msgid "Make shared decks download with Android browser" +msgstr "" + +#: src/changelog/v2.3.md:17 +msgid "Add reset and reschedule feature in note editor" +msgstr "" + +#: src/changelog/v2.3.md:18 +msgid "Add a new notification system and icon" +msgstr "" + +#: src/changelog/v2.3.md:19 +msgid "Replace tutorial deck with new welcome screen" +msgstr "" + +#: src/changelog/v2.3.md:20 +msgid "Disable opening navigation drawer from reviewer when swipe is used" +msgstr "" + +#: src/changelog/v2.3.md:21 +msgid "Improve audio recording quality" +msgstr "" + +#: src/changelog/v2.3.md:22 +msgid "Support sticky fields when enabled in Anki Desktop" +msgstr "" + +#: src/changelog/v2.3.md:23 +msgid "Many other bug fixes" +msgstr "" + +#: src/changelog/v2.2.md:1 +msgid "Version 2.2.3 (2014-08-04)" +msgstr "" + +#: src/changelog/v2.2.md:2 +msgid "New media sync protocol" +msgstr "" + +#: src/changelog/v2.2.md:3 +msgid "Fix 2 bugs for opening links and resuming the app" +msgstr "" + +#: src/changelog/v2.2.md:5 +msgid "Version 2.2 (2014-07-21)" +msgstr "" + +#: src/changelog/v2.2.md:6 +msgid "Redesign layout" +msgstr "" + +#: src/changelog/v2.2.md:7 +msgid "Add pictures and sounds to flashcards (experimental)" +msgstr "" + +#: src/changelog/v2.2.md:8 +msgid "Make second column in card browser configurable" +msgstr "" + +#: src/changelog/v2.2.md:9 +msgid "Make images on flashcards zoomable" +msgstr "" + +#: src/changelog/v2.2.md:10 +msgid "Improve preview feature and access via action bar" +msgstr "" + +#: src/changelog/v2.2.md:11 +msgid "Simplify menus and settings" +msgstr "" + +#: src/changelog/v2.2.md:12 +msgid "Make slow searches in card browser cancellable" +msgstr "" + +#: src/changelog/v2.2.md:13 +msgid "Improve adding/removing tags" +msgstr "" + +#: src/changelog/v2.2.md:14 +msgid "Fix \"type in the answer\" and cloze deletion features" +msgstr "" + +#: src/changelog/v2.2.md:15 +msgid "Fix whiteboard feature" +msgstr "" + +#: src/changelog/v2.2.md:16 +msgid "Restore backups from within the app" +msgstr "" + +#: src/changelog/v2.2.md:17 +msgid "Make volume duck on any background music when sounds played" +msgstr "" + +#: src/changelog/v2.2.md:18 +msgid "Make playing of sounds consistent with Desktop version" +msgstr "" + +#: src/changelog/v2.2.md:19 +msgid "Remove animations feature due to being buggy" +msgstr "" + +#: src/changelog/v2.2.md:20 +msgid "Improve speed of showing cards" +msgstr "" + +#: src/changelog/v2.2.md:21 +msgid "Remove duplicate check dialog when adding new flashcards" +msgstr "" + +#: src/changelog/v2.2.md:22 +msgid "Remove swap button when adding or editing flashcards" +msgstr "" + +#: src/changelog/v2.2.md:23 +msgid "Remove kanji info feature (will become optional plugin in the future)" +msgstr "" + +#: src/changelog/v2.2.md:24 +msgid "Make minimum Android version 2.1" +msgstr "" + +#: src/changelog/v2.2.md:25 +msgid "Fix lots of bugs" +msgstr "" + +#: src/changelog/v2.1.md:1 +msgid "Version 2.1.3 (2014-04-05)" +msgstr "" + +#: src/changelog/v2.1.md:2 +msgid "Create new notes in correct deck" +msgstr "" + +#: src/changelog/v2.1.md:3 +msgid "TTS fixes" +msgstr "" + +#: src/changelog/v2.1.md:5 +msgid "Version 2.1 (2014-03-27)" +msgstr "" + +#: src/changelog/v2.1.md:6 +msgid "Lots of Bug Fixes" +msgstr "" + +#: src/changelog/v2.1.md:7 +msgid "New custom study option with improved tag selection" +msgstr "" + +#: src/changelog/v2.1.md:8 +msgid "New preview card feature in note editor (experimental)" +msgstr "" + +#: src/changelog/v2.1.md:9 +msgid "New override font preference in addition to default font" +msgstr "" + +#: src/changelog/v2.1.md:10 +msgid "New \"Kanji Info\" feature (enabled in preferences->reviewing->Kanji Info)" +msgstr "" + +#: src/changelog/v2.1.md:11 +msgid "Improve Aedict integration" +msgstr "" + +#: src/changelog/v2.1.md:12 +msgid "Support for Samsung Multi-Window" +msgstr "" + +#: src/changelog/v2.1.md:13 +msgid "Fix Some TTS Issues" +msgstr "" + +#: src/changelog/v2.1.md:14 +msgid "Updated Translations" +msgstr "" + +#: src/changelog/v2.1.md:15 +msgid "Remove unused media check when deleting decks" +msgstr "" + +#: src/changelog/v2.1.md:16 +msgid "Significantly increase speed for reducing filtered decks" +msgstr "" + +#: src/changelog/v2.1.md:17 +msgid "Remove upgrade wizard" +msgstr "" + +#: src/changelog/v2.0.md:1 +msgid "Version 2.0.4 (2014-02-03)" +msgstr "" + +#: src/changelog/v2.0.md:2 +msgid "Fix issue with typing answers" +msgstr "" + +#: src/changelog/v2.0.md:3 +msgid "Default font now overrides card font" +msgstr "" + +#: src/changelog/v2.0.md:4 +msgid "Fixed audio playback image being covered by text on Android 2.3" +msgstr "" + +#: src/changelog/v2.0.md:5 +msgid "Fixed reviewer crash when language set to Romanian" +msgstr "" + +#: src/changelog/v2.0.md:6 +msgid "Translation fixes" +msgstr "" + +#: src/changelog/v2.0.md:8 +msgid "Version 2.0.2 (2013-12-15)" +msgstr "" + +#: src/changelog/v2.0.md:9 +msgid "Fixed lots of crashes" +msgstr "" + +#: src/changelog/v2.0.md:10 +msgid "Tablet UI fixes" +msgstr "" + +#: src/changelog/v2.0.md:11 +msgid "Fixed new card ordering issues" +msgstr "" + +#: src/changelog/v2.0.md:12 +msgid "Card appearance now matches desktop Anki. (Centering cards is off by default but can be re-enabled)" +msgstr "" + +#: src/changelog/v2.0.md:13 +msgid "Option groups can now be changed in AnkiDroid" +msgstr "" + +#: src/changelog/v2.0.md:14 +msgid "Clear error message when using a bad template" +msgstr "" + +#: src/changelog/v2.0.md:15 +msgid "Fixed timeboxing notifications" +msgstr "" + +#: src/changelog/v2.0.md:16 +msgid "Properly scale images" +msgstr "" + +#: src/changelog/v2.0.md:17 +msgid "Better custom font handling" +msgstr "" + +#: src/changelog/v2.0.md:18 +msgid "More settings (next day starts at, timeboxing value, etc.)" +msgstr "" + +#: src/changelog/v2.0.md:19 +msgid "Changing AnkiDroid interface language now works." +msgstr "" + +#: src/changelog/v2.0.md:20 +msgid "Fixed import/shared deck download issues (\"not a valid apkg file\")" +msgstr "" + +#: src/changelog/v2.0.md:21 +msgid "Fixed invisible text on Motorola devices" +msgstr "" + +#: src/changelog/v2.0.md:22 +msgid "Focus on answer when revealed" +msgstr "" + +#: src/changelog/v2.0.md:23 +msgid "Filtered decks are now blue in deck list" +msgstr "" + +#: src/changelog/v2.0.md:24 +msgid "Removed unused circle button in note editor" +msgstr "" + +#: src/changelog/v2.0.md:26 +msgid "Version 2.0.1 (2013-02-06)" +msgstr "" + +#: src/changelog/v2.0.md:27 +msgid "Upgrade wizard" +msgstr "" + +#: src/changelog/v2.0.md:28 +msgid "Fix importing apkgs" +msgstr "" + +#: src/changelog/v2.0.md:29 +msgid "Fix media syncing" +msgstr "" + +#: src/changelog/v2.0.md:31 +msgid "Version 2.0 (2013-01-03)" +msgstr "" + +#: src/changelog/v2.0.md:32 +msgid "complete revision" +msgstr "" + +#: src/changelog/v2.0.md:33 +msgid "libanki2.0 scheduling" +msgstr "" + +#: src/changelog/v2.0.md:34 +msgid "new learning mode" +msgstr "" + +#: src/changelog/v2.0.md:35 +msgid "new layout" +msgstr "" + +#: src/changelog/v2.0.md:36 +msgid "merge syncing possible now" +msgstr "" + +#: src/changelog/v2.0.md:37 +msgid "better statistics" +msgstr "" + +#: src/changelog/v2.0.md:38 +msgid "decks are now saved in a single collection" +msgstr "" + +#: src/changelog/v2.0.md:39 +msgid "options are shareable now" +msgstr "" + +#: src/changelog/v2.0.md:40 +msgid "tablet layout" +msgstr "" + +#: src/changelog/v2.0.md:41 +msgid "tons of performance improvements" +msgstr "" + +#: src/changelog/v2.0.md:42 +msgid "card import function" +msgstr "" + +#: src/changelog/v2.0.md:43 +msgid "collection can be saved on internal memory" +msgstr "" + +#: src/changelog/v0.1-to-1.1.3.md:2 +msgid "AnkiDroid has continuously evolved collectively as an open source project, with the first version released to the Google Market on [June 28 2009](http://nicolas-raoul.blogspot.jp/2009/06/just-published-ankidroid-on-market.html). " +msgstr "" + +#: src/changelog/v0.1-to-1.1.3.md:4 +msgid "Version 1.1.3 was the last 1.x version (released on 26th June 2012), before the incompatible AnkiDroid v2.0 was released, essentially rewritten from scratch to be compatible with the new Anki Desktop v2.0." +msgstr "" + diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 0000000..7dc8a52 --- /dev/null +++ b/po/ru.po @@ -0,0 +1,6445 @@ +msgid "" +msgstr "" +"Project-Id-Version: ankidroiddocs\n" +"POT-Creation-Date: 2024-02-01T17:14:41Z\n" +"PO-Revision-Date: 2024-02-02 08:38\n" +"Last-Translator: \n" +"Language-Team: Russian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n" +"X-Crowdin-Project: ankidroiddocs\n" +"X-Crowdin-Project-ID: 645072\n" +"X-Crowdin-Language: ru\n" +"X-Crowdin-File: messages.pot\n" +"X-Crowdin-File-ID: 2\n" + +#: src/SUMMARY.md:1 +msgid "Summary" +msgstr "" + +#: src/SUMMARY.md:3 src/intro.md:1 src/intro.md:1 +msgid "Introduction" +msgstr "" + +#: src/SUMMARY.md:4 src/getting-started.md:1 +msgid "Getting started" +msgstr "" + +#: src/SUMMARY.md:6 src/deck-picker.md:1 +msgid "The Deck List" +msgstr "" + +#: src/SUMMARY.md:8 src/drawer.md:1 +msgid "Navigation Drawer" +msgstr "" + +#: src/SUMMARY.md:10 src/deck-overview.md:1 +msgid "Deck Overview Screen" +msgstr "" + +#: src/SUMMARY.md:12 src/reviewer.md:1 +msgid "Study Screen" +msgstr "" + +#: src/SUMMARY.md:14 src/adding-notes.md:1 +msgid "Add Note Screen" +msgstr "" + +#: src/SUMMARY.md:16 src/editing-notes.md:1 +msgid "Edit Note Screen" +msgstr "" + +#: src/SUMMARY.md:18 src/browser.md:1 +msgid "Finding/Searching/Browsing" +msgstr "" + +#: src/SUMMARY.md:20 src/filtered-deck.md:1 +msgid "Filtered Decks" +msgstr "" + +#: src/SUMMARY.md:22 src/importing/importing-anki-files.md:1 +msgid "Importing Anki Files" +msgstr "" + +#: src/SUMMARY.md:23 src/importing/importing-anki-databases.md:1 +msgid "Importing Anki Databases (.anki2)" +msgstr "" + +#: src/SUMMARY.md:25 src/exporting.md:1 +msgid "Exporting Anki Files" +msgstr "" + +#: src/SUMMARY.md:27 src/backups.md:1 +msgid "Automatic Backups" +msgstr "" + +#: src/SUMMARY.md:29 src/settings.md:1 +msgid "Preferences" +msgstr "" + +#: src/SUMMARY.md:31 src/gestures.md:1 +msgid "Gestures" +msgstr "" + +#: src/SUMMARY.md:33 src/note-formatting-toolbar.md:1 +msgid "Note Formatting Toolbar" +msgstr "" + +#: src/SUMMARY.md:35 src/keyboard-shortcuts.md:1 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/SUMMARY.md:37 src/rtl.md:1 +msgid "Using Right-To-Left Languages with AnkiDroid" +msgstr "" + +#: src/SUMMARY.md:39 src/anki-desktop.md:1 +msgid "Using Anki Desktop with AnkiDroid" +msgstr "" + +#: src/SUMMARY.md:41 src/ankiweb-conflicts.md:1 +msgid "Dealing with merge conflicts on AnkiWeb" +msgstr "" + +#: src/SUMMARY.md:43 src/advanced-features/intro.md:1 +msgid "Advanced Features" +msgstr "" + +#: src/SUMMARY.md:44 src/advanced-features/mathjax.md:1 +msgid "MathJax Support" +msgstr "" + +#: src/SUMMARY.md:45 src/advanced-features/reverse-cards.md:1 +msgid "Reverse Cards" +msgstr "" + +#: src/SUMMARY.md:46 src/advanced-features/custom-fonts.md:1 +msgid "Custom Fonts" +msgstr "" + +#: src/SUMMARY.md:47 src/advanced-features/customizing-card-layout.md:1 +msgid "Custom Card Layout" +msgstr "" + +#: src/SUMMARY.md:48 src/advanced-features/type-in-answer.md:1 +msgid "Type in the answer feature" +msgstr "" + +#: src/SUMMARY.md:49 src/gestures.md:146 +#: src/advanced-features/advanced-statistics.md:1 +msgid "Advanced Statistics" +msgstr "" + +#: src/SUMMARY.md:50 src/advanced-features/reminders.md:1 +msgid "Reminders" +msgstr "" + +#: src/SUMMARY.md:51 src/advanced-features/set-language-hint.md:1 +msgid "Automatic Language Selection" +msgstr "" + +#: src/SUMMARY.md:54 +msgid "Help & Supports" +msgstr "" + +#: src/SUMMARY.md:55 src/beta-testing.md:1 +msgid "Beta testing" +msgstr "" + +#: src/SUMMARY.md:56 src/help.md:33 src/contributing.md:1 +msgid "Contributing to AnkiDroid" +msgstr "" + +#: src/SUMMARY.md:57 +msgid "Changelog" +msgstr "" + +#: src/SUMMARY.md:58 +msgid "Version 2.15" +msgstr "" + +#: src/SUMMARY.md:59 +msgid "Version 2.14" +msgstr "" + +#: src/SUMMARY.md:60 +msgid "Version 2.13" +msgstr "" + +#: src/SUMMARY.md:61 +msgid "Version 2.12" +msgstr "" + +#: src/SUMMARY.md:62 +msgid "Version 2.11" +msgstr "" + +#: src/SUMMARY.md:63 +msgid "Version 2.10" +msgstr "" + +#: src/SUMMARY.md:64 +msgid "Version 2.9" +msgstr "" + +#: src/SUMMARY.md:65 +msgid "Version 2.8" +msgstr "" + +#: src/SUMMARY.md:66 +msgid "Version 2.7" +msgstr "" + +#: src/SUMMARY.md:67 +msgid "Version 2.6" +msgstr "" + +#: src/SUMMARY.md:68 +msgid "Version 2.5" +msgstr "" + +#: src/SUMMARY.md:69 +msgid "Version 2.4" +msgstr "" + +#: src/SUMMARY.md:70 +msgid "Version 2.3" +msgstr "" + +#: src/SUMMARY.md:71 +msgid "Version 2.2" +msgstr "" + +#: src/SUMMARY.md:72 +msgid "Version 2.1" +msgstr "" + +#: src/SUMMARY.md:73 +msgid "Version 2.0" +msgstr "" + +#: src/SUMMARY.md:74 src/changelog/v0.1-to-1.1.3.md:1 +msgid "Version 0.1 to 1.1.3" +msgstr "" + +#: src/intro.md:3 src/intro.md:3 +msgid "Thank you for using AnkiDroid, the Android client for the popular [Anki](http://ankisrs.net) spaced repetition system. " +msgstr "" + +#: src/intro.md:5 src/intro.md:5 +msgid "Anki is spaced repetition technique which is simple but highly effective. It helps you memorize things by automatically repeating them across increasing intervals based on your responses with no need for you to keep track of what to study or when to study it. You create notes (or download shared decks) with content you need to memorize, and the scheduler will make sure you see the content when you need to." +msgstr "" + +#: src/intro.md:7 src/intro.md:7 +msgid "AnkiDroid is intended to be used in conjunction with Anki on your computer. While it is possible to function without it, some tasks are either only possible with, or a lot more efficient with Anki Desktop. Furthermore, it is **strongly recommended** to at least read [`Key Concepts`](https://docs.ankiweb.net/getting-started.html#key-concepts) section of the main Anki manual to understand the terminology used here." +msgstr "" + +#: src/intro.md:9 src/intro.md:9 +msgid "If this manual doesn't contain what you are looking for, please check the [AnkiDroid Wiki](https://github.com/ankidroid/Anki-Android/wiki) for a list of changes, instructions for submitting bug reports and feature requests, a list of frequently asked questions, and much more." +msgstr "" + +#: src/getting-started.md:2 +msgid "To start using AnkiDroid, we need to add some cards to study. From the main screen, tapping the big blue plus button will allow you to either add a new **note** (i.e. create new flashcards), download shared decks (decks that other people have created and shared online), or create new empty decks." +msgstr "" + +#: src/getting-started.md:4 +msgid "Please watch this 5 minute [tutorial video](https://www.youtube.com/watch?v=F2K1gOSdIZA), which gives an introduction to adding, downloading, and studying cards in AnkiDroid. More detailed information can be found in the sections below." +msgstr "" + +#: src/getting-started.md:6 +msgid "If you are an existing user of Anki Desktop wishing to import your decks from the computer, you might like to skip straight to the [using AnkiDroid with Anki Desktop](anki-desktop.md#using-anki-desktop-with-ankidroid) section." +msgstr "" + +#: src/deck-picker.md:3 +msgid "[Add button](#add-button)" +msgstr "" + +#: src/deck-picker.md:4 +msgid "[Add](#add)" +msgstr "" + +#: src/deck-picker.md:5 +msgid "[Get shared decks](#get-shared-decks)" +msgstr "" + +#: src/deck-picker.md:6 +msgid "[Create deck](#create-deck)" +msgstr "" + +#: src/deck-picker.md:7 +msgid "[App Bar](#app-bar)" +msgstr "" + +#: src/deck-picker.md:8 +msgid "[Navigation menu button](#navigation-menu-button)" +msgstr "" + +#: src/deck-picker.md:9 +msgid "[Sync button](#sync-button)" +msgstr "" + +#: src/deck-picker.md:10 +msgid "[Overflow menu button](#overflow-menu-button)" +msgstr "" + +#: src/deck-picker.md:11 +msgid "[Studying a Deck](#studying-a-deck)" +msgstr "" + +#: src/deck-picker.md:12 +msgid "[Other Deck Actions](#other-deck-actions)" +msgstr "" + +#: src/deck-picker.md:13 +msgid "[Rename deck](#rename-deck)" +msgstr "" + +#: src/deck-picker.md:14 +msgid "[Deck options](#deck-options)" +msgstr "" + +#: src/deck-picker.md:15 +msgid "[Custom study](#custom-study)" +msgstr "" + +#: src/deck-picker.md:16 +msgid "[Delete deck](#delete-deck)" +msgstr "" + +#: src/deck-picker.md:17 +msgid "[Export deck](#export-deck)" +msgstr "" + +#: src/deck-picker.md:18 src/deck-overview.md:11 +msgid "[Unbury](#unbury)" +msgstr "" + +#: src/deck-picker.md:19 +msgid "[Rebuild / Empty](#rebuild--empty)" +msgstr "" + +#: src/deck-picker.md:20 +msgid "[Clickable areas on the decks](#clickable-areas-on-the-decks)" +msgstr "" + +#: src/deck-picker.md:21 +msgid "[Deck expander](#deck-expander)" +msgstr "" + +#: src/deck-picker.md:22 +msgid "[Deck name](#deck-name)" +msgstr "" + +#: src/deck-picker.md:23 +msgid "[Count buttons](#count-buttons)" +msgstr "" + +#: src/deck-picker.md:24 +msgid "[Advanced Actions](#advanced-actions)" +msgstr "" + +#: src/deck-picker.md:25 src/gestures.md:11 +msgid "[Undo](#undo)" +msgstr "" + +#: src/deck-picker.md:26 +msgid "[Check database](#check-database)" +msgstr "" + +#: src/deck-picker.md:27 +msgid "[Check media](#check-media)" +msgstr "" + +#: src/deck-picker.md:28 +msgid "[Empty cards](#empty-cards)" +msgstr "" + +#: src/deck-picker.md:29 +msgid "[Restore from backup](#restore-from-backup)" +msgstr "" + +#: src/deck-picker.md:30 +msgid "[Manage note types](#manage-note-types)" +msgstr "" + +#: src/deck-picker.md:31 +msgid "[Import](#import)" +msgstr "" + +#: src/deck-picker.md:32 +msgid "[Export collection](#export-collection)" +msgstr "" + +#: src/deck-picker.md:33 +msgid "[Deck Counts](#deck-counts)" +msgstr "" + +#: src/deck-picker.md:35 +msgid "__Note:__ _This section onwards assumes you understand what [decks and cards](https://docs.ankiweb.net/getting-started.html#key-concepts) are_" +msgstr "" + +#: src/deck-picker.md:37 +msgid "The deck list is the screen you see when you start AnkiDroid. It displays a list of the decks which contain all of your flashcards, and allows you to perform various actions:" +msgstr "" + +#: src/deck-picker.md:39 +msgid "![decks.png](img/1-decks.png)" +msgstr "" + +#: src/deck-picker.md:41 +msgid "Add button" +msgstr "" + +#: src/deck-picker.md:42 +msgid "The big blue + button in the bottom right corner is used to add new material to AnkiDroid. Pressing it expands to give the following three options, which are also described in the [tutorial video](https://www.youtube.com/watch?v=F2K1gOSdIZA)." +msgstr "" + +#: src/deck-picker.md:44 +msgid "Add" +msgstr "" + +#: src/deck-picker.md:45 +msgid "Choose this option if you want to create your own flashcards (notes) with AnkiDroid. \"Notes\" and \"cards\" have specific meanings in Anki, which are [explained in the main Anki manual](https://docs.ankiweb.net/getting-started.html#key-concepts). Please see the tutorial video for a quick introduction to adding notes, or refer to the [adding notes](adding-notes.md#add-note-screen) section below for more detailed information." +msgstr "" + +#: src/deck-picker.md:47 +msgid "Get shared decks" +msgstr "" + +#: src/deck-picker.md:48 +msgid "To download a deck of cards from the internet that another user has contributed:" +msgstr "" + +#: src/deck-picker.md:49 +msgid "Ensure you're connected to the internet." +msgstr "" + +#: src/deck-picker.md:50 +msgid "Tap + and then **Get shared decks**. AnkiWeb will open." +msgstr "" + +#: src/deck-picker.md:51 +msgid "Select a category, or type in a search." +msgstr "" + +#: src/deck-picker.md:52 +msgid "Tap **Info** on a deck you'd like to study." +msgstr "" + +#: src/deck-picker.md:53 +msgid "Scroll down and tap **Download**." +msgstr "" + +#: src/deck-picker.md:54 +msgid "You browser will download the file and display a `download complete` notification. Tap this button." +msgstr "" + +#: src/deck-picker.md:56 +msgid "AnkiDroid will appear, and show a confirmation dialog. Tap the **Add** button." +msgstr "" + +#: src/deck-picker.md:57 +msgid "When the import completes, your deck should be ready to study." +msgstr "" + +#: src/deck-picker.md:59 +msgid "Create deck" +msgstr "" + +#: src/deck-picker.md:60 +msgid "To create a new empty deck:" +msgstr "" + +#: src/deck-picker.md:61 +msgid "Tap the **+** button and choose `Create deck`" +msgstr "" + +#: src/deck-picker.md:62 +msgid "Choose a name for the deck, for example `New Japanese`" +msgstr "" + +#: src/deck-picker.md:63 +msgid "Add cards to it following the `Add` instructions above" +msgstr "" + +#: src/deck-picker.md:65 src/reviewer.md:16 +msgid "App Bar" +msgstr "" + +#: src/deck-picker.md:66 +msgid "At the top of each screen in AnkiDroid is the App Bar, with buttons for performing various actions. The following actions are available from the app bar in the deck list:" +msgstr "" + +#: src/deck-picker.md:69 +msgid "Navigation menu button" +msgstr "" + +#: src/deck-picker.md:70 +msgid "Tapping the icon on the far left will show the [left navigation menu](drawer.md#navigation-drawer) for quickly navigating between the main parts of the app." +msgstr "" + +#: src/deck-picker.md:72 +msgid "Sync button" +msgstr "" + +#: src/deck-picker.md:73 +msgid "The circular button with arrows on the right is for synchronizing your cards with the cloud, as described in the [adding decks from cloud](anki-desktop.md#using-anki-desktop-with-ankidroid) section." +msgstr "" + +#: src/deck-picker.md:75 +msgid "Overflow menu button" +msgstr "" + +#: src/deck-picker.md:76 +msgid "On the far right is the overflow menu which contains less commonly used actions. These actions are described further below." +msgstr "" + +#: src/deck-picker.md:78 +msgid "**Hint:** long tapping on a button in the app bar anywhere in the app will display a textual hint describing what the button does!" +msgstr "" + +#: src/deck-picker.md:80 +msgid "Studying a Deck" +msgstr "" + +#: src/deck-picker.md:81 +msgid "To study the cards in a deck, simply tap on the deck name (or the \"STUDY\" button on a 10\" tablet), and AnkiDroid will switch to study mode. " +msgstr "" + +#: src/deck-picker.md:83 +msgid "Note that the currently selected deck is highlighted with a grey background, and if you have any [filtered decks](filtered-deck.md#filtered-decks) they will be highlighted using a blue font. Filtered decks are discussed elsewhere in the manual." +msgstr "" + +#: src/deck-picker.md:85 +msgid "Other Deck Actions" +msgstr "" + +#: src/deck-picker.md:86 +msgid "Long tapping on a deck will show a list of other actions available to perform on that deck:" +msgstr "" + +#: src/deck-picker.md:88 +msgid "Rename deck" +msgstr "" + +#: src/deck-picker.md:89 +msgid "Use this option to rename a deck" +msgstr "" + +#: src/deck-picker.md:91 src/reviewer.md:46 +msgid "Deck options" +msgstr "" + +#: src/deck-picker.md:92 +msgid "Tapping on deck options allows you to configure various deck specific study options. Please see the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options." +msgstr "" + +#: src/deck-picker.md:95 +msgid "Custom study" +msgstr "" + +#: src/deck-picker.md:96 +msgid "Allows you to choose from some convenient presets for studying outside of your normal schedule, for example increasing the study limit for the day. See the section on [filtered decks](filtered-deck.md#filtered-decks) for more detailed information." +msgstr "" + +#: src/deck-picker.md:98 +msgid "Delete deck" +msgstr "" + +#: src/deck-picker.md:99 +msgid "Use this option to delete a deck (note: this action is not reversible, although you can [restore from a backup](backups.md#automatic-backups)" +msgstr "" + +#: src/deck-picker.md:101 +msgid "Export deck" +msgstr "" + +#: src/deck-picker.md:102 +msgid "This option can be used to share a deck with other users. See the [exporting decks](exporting.md#exporting-anki-files) section for more information." +msgstr "" + +#: src/deck-picker.md:104 src/deck-overview.md:40 +msgid "Unbury" +msgstr "" + +#: src/deck-picker.md:105 src/deck-overview.md:41 +msgid "This option is only visible when the selected deck has cards that have been manually or automatically buried." +msgstr "" + +#: src/deck-picker.md:107 +msgid "Rebuild / Empty" +msgstr "" + +#: src/deck-picker.md:108 +msgid "If the selected deck is a [filtered decks](filtered-deck.md#filtered-decks) then you also have the option to rebuild or empty the cards in it." +msgstr "" + +#: src/deck-picker.md:111 +msgid "Clickable areas on the decks" +msgstr "" + +#: src/deck-picker.md:112 +msgid "Each deck in the list has three clickable areas:" +msgstr "" + +#: src/deck-picker.md:114 +msgid "Deck expander" +msgstr "" + +#: src/deck-picker.md:115 +msgid "If you are using [subdecks](https://docs.ankiweb.net/getting-started.html#decks), then a deck expander button may appear on the far left of the deck, which can be used to show / hide the subdecks. A ▶ icon means the deck has hidden subdecks which can be shown, a ▼ icon means the deck has visible subdecks that can be hidden, and no icon means that the deck has no subdecks. " +msgstr "" + +#: src/deck-picker.md:117 +msgid "**Note:** subdecks can be created by using the naming convention `PARENT::CHILD`." +msgstr "" + +#: src/deck-picker.md:119 +msgid "Deck name" +msgstr "" + +#: src/deck-picker.md:120 +msgid "This is the main clickable area, which will take you to the study screen if there are cards available to review." +msgstr "" + +#: src/deck-picker.md:122 +msgid "Count buttons" +msgstr "" + +#: src/deck-picker.md:123 +msgid "The count buttons on the far right of each deck act as a separate clickable area that takes you to the deck overview instead of the study screen. This can be useful if you want to quickly view the number of cards available in the deck." +msgstr "" + +#: src/deck-picker.md:125 +msgid "Advanced Actions" +msgstr "" + +#: src/deck-picker.md:126 +msgid "Some additional actions are located in the overflow menu for less common tasks, which are summarized below:" +msgstr "" + +#: src/deck-picker.md:128 src/reviewer.md:19 src/gestures.md:88 +#: src/keyboard-shortcuts.md:28 +msgid "Undo" +msgstr "" + +#: src/deck-picker.md:129 +msgid "After reviewing the last card in a study session, you can undo it from here." +msgstr "" + +#: src/deck-picker.md:131 +msgid "Check database" +msgstr "" + +#: src/deck-picker.md:132 +msgid "This can automatically fix a lot of problems with your database, and will also purge any unused tags. If you experience any problems with your collection, this is the first action you should try. " +msgstr "" + +#: src/deck-picker.md:134 +msgid "**NOTE:** Under some circumstances, check database will move cards to a deck named _!Recovered Cards_. If this occurs, please move the cards to an appropriate deck via the [card browser](browser.md#findingsearchingbrowsing), and delete _!Recovered Cards_ when it is empty." +msgstr "" + +#: src/deck-picker.md:136 +msgid "Check media" +msgstr "" + +#: src/deck-picker.md:137 +msgid "Try to run this if you experience any issues with media syncing." +msgstr "" + +#: src/deck-picker.md:139 +msgid "Empty cards" +msgstr "" + +#: src/deck-picker.md:140 +msgid "Remove any empty cards from your collection. See the [desktop documentation](https://docs.ankiweb.net/templates/generation.html#card-generation--deletion) for more." +msgstr "" + +#: src/deck-picker.md:142 +msgid "Restore from backup" +msgstr "" + +#: src/deck-picker.md:143 +msgid "Allows you to restore from one of AnkiDroid's [automatic backups](backups.md#automatic-backups)" +msgstr "" + +#: src/deck-picker.md:145 +msgid "Manage note types" +msgstr "" + +#: src/deck-picker.md:146 +msgid "Allows you to add, edit, and delete note types. See the [customizing card layout](advanced-features/customizing-card-layout.md) section for more help with this advanced feature.Keyboard Shortcuts" +msgstr "" + +#: src/deck-picker.md:148 +msgid "Import" +msgstr "" + +#: src/deck-picker.md:149 +msgid "Import a .apkg anki file containing a deck. See the [importing](importing/importing-anki-files.md) section for more." +msgstr "" + +#: src/deck-picker.md:151 +msgid "Export collection" +msgstr "" + +#: src/deck-picker.md:152 +msgid "Export entire collection as a collection.apkg file. See the [exporting](exporting.md) section for more." +msgstr "" + +#: src/deck-picker.md:154 +msgid "Deck Counts" +msgstr "" + +#: src/deck-picker.md:155 +msgid "Next to each deck, three numbers are displayed. The left, blue number, corresponds to how many new cards you have to learn today. Anki will introduce 20 new cards a day by default, and you can customize this number if you'd like. The red number in the middle is for the cards due to be studied today which are currently in the learning phase, and the green number is the cards which are due for review (i.e. cards which have already graduated from the learning phase). On a deck you've never studied before, these numbers will both be zero." +msgstr "" + +#: src/deck-picker.md:157 +msgid "As explained above, tapping on the counts will take you to the deck overview screen." +msgstr "" + +#: src/drawer.md:3 +msgid "![navigation_drawer.png](img/2-navigation_drawer.png)" +msgstr "" + +#: src/drawer.md:5 +msgid "The navigation drawer can be opened from most places in the application by pressing the left menu icon, or alternatively swiping outwards from anywhere on the far left side of the screen. It is used for quickly navigating between different parts of the application. You can switch to the following screens:" +msgstr "" + +#: src/drawer.md:9 +msgid "Decks" +msgstr "" + +#: src/drawer.md:10 +msgid "Takes you to the top level of the app where the list of cards are shown ([more info here](deck-picker.md))" +msgstr "" + +#: src/drawer.md:12 src/keyboard-shortcuts.md:8 src/keyboard-shortcuts.md:51 +msgid "Card Browser" +msgstr "" + +#: src/drawer.md:13 +msgid "Shows a list of all your cards ([more info here](browser.md))" +msgstr "" + +#: src/drawer.md:15 +msgid "Statistics" +msgstr "" + +#: src/drawer.md:16 +msgid "Helps you track your study progress ([more info in Anki manual](https://docs.ankiweb.net/stats.html#statistics) and [here](advanced-features/advanced-statistics.md))" +msgstr "" + +#: src/drawer.md:18 +msgid "Night mode" +msgstr "" + +#: src/drawer.md:19 +msgid "This switches the app to a dark theme which many users find is less straining on the eyes, particularly when reviewing in the dark. See the " +msgstr "" + +#: src/drawer.md:19 +msgid "wiki" +msgstr "" + +#: src/drawer.md:19 +msgid " for instructions on how to customize the card background and font color used in night mode." +msgstr "" + +#: src/drawer.md:21 +msgid "Settings" +msgstr "" + +#: src/drawer.md:22 +msgid "Allows you to customize the app ([more info here](settings.md))" +msgstr "" + +#: src/drawer.md:24 +msgid "Help" +msgstr "" + +#: src/drawer.md:25 +msgid "Opens this web page" +msgstr "" + +#: src/drawer.md:27 +msgid "Send feedback" +msgstr "" + +#: src/drawer.md:28 +msgid "Get support from the AnkiDroid team" +msgstr "" + +#: src/deck-overview.md:3 +msgid "[App bar](#app-bar)" +msgstr "" + +#: src/deck-overview.md:4 +msgid "[Ordinary decks](#ordinary-decks)" +msgstr "" + +#: src/deck-overview.md:5 +msgid "[Custom Study](#custom-study)" +msgstr "" + +#: src/deck-overview.md:6 +msgid "[Filtered decks](#filtered-decks)" +msgstr "" + +#: src/deck-overview.md:7 +msgid "[Empty deck](#empty-deck)" +msgstr "" + +#: src/deck-overview.md:8 +msgid "[Rebuild deck](#rebuild-deck)" +msgstr "" + +#: src/deck-overview.md:9 +msgid "[Overflow menu](#overflow-menu)" +msgstr "" + +#: src/deck-overview.md:10 +msgid "[Deck Options](#deck-options)" +msgstr "" + +#: src/deck-overview.md:13 +msgid "![deck_overview.png](img/3-deck_overview.png)" +msgstr "" + +#: src/deck-overview.md:15 +msgid "From the deck list, if you tap the counts area you will be taken to the deck overview screen. On tablets it is always shown in the area to the right of the deck list." +msgstr "" + +#: src/deck-overview.md:17 +msgid "On this screen you can view a summary of the deck, build custom study sessions, rebuild / empty filtered decks, and change deck options. When visible, pressing the study button will take you to the study screen for that deck." +msgstr "" + +#: src/deck-overview.md:19 +msgid "App bar" +msgstr "" + +#: src/deck-overview.md:20 +msgid "The icons that are shown in the app bar depend on whether your deck is an ordinary deck or a filtered deck." +msgstr "" + +#: src/deck-overview.md:22 +msgid "Ordinary decks" +msgstr "" + +#: src/deck-overview.md:24 +msgid "Custom Study" +msgstr "" + +#: src/deck-overview.md:25 +msgid "Tapping the wrench icon allows you to create a custom session, for example to do extra reviews outside your normal schedule, or study only certain cards inside a deck. See the [filtered deck section](filtered-deck.md) for more information on this." +msgstr "" + +#: src/deck-overview.md:27 +msgid "Filtered decks" +msgstr "" + +#: src/deck-overview.md:29 +msgid "Empty deck" +msgstr "" + +#: src/deck-overview.md:30 +msgid "Tapping the cross icon will empty all of the cards in the current filtered deck (i.e. return them to their original deck)." +msgstr "" + +#: src/deck-overview.md:32 +msgid "Rebuild deck" +msgstr "" + +#: src/deck-overview.md:33 +msgid "Tapping the rebuild icon will rebuild the current filtered deck according to the settings specified in filtered deck options." +msgstr "" + +#: src/deck-overview.md:35 +msgid "Overflow menu" +msgstr "" + +#: src/deck-overview.md:37 +msgid "Deck Options" +msgstr "" + +#: src/deck-overview.md:38 +msgid "Allows you to configure some options related to the current deck, such as the number of new cards and reviews to introduce each day. Please see the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options." +msgstr "" + +#: src/reviewer.md:3 +msgid "Tapping on the deck name from the deck list, or the study button from the deck overview screen will take you to the study screen where you do your study. " +msgstr "" + +#: src/reviewer.md:5 +msgid "![reviewer.png](img/4-reviewer.png)" +msgstr "" + +#: src/reviewer.md:7 +msgid "Basics" +msgstr "" + +#: src/reviewer.md:8 +msgid "If you have not used Anki on a computer before, you may like to have a look at the first [intro video](https://docs.ankiweb.net/getting-started.html#videos) before reading on, as it explains the basic review process." +msgstr "" + +#: src/reviewer.md:10 +msgid "On the top left of the screen you'll see three numbers. From the left, these correspond to new cards, learning cards, and cards to review. These are explained in more detail in the intro videos for the desktop program, so please [check them out](https://docs.ankiweb.net/getting-started.html#videos) if you haven't already." +msgstr "" + +#: src/reviewer.md:12 +msgid "When you've looked at a card's question and remembered the answer, or decided you don't know it, tap the **show answer** button. When you do, the bottom area will change to display 2-4 answer buttons, depending on how you've answered the card previously. The buttons will display the time a card will next be shown, so 10m means **10 minutes** and **5d** means **5 days**. You can tap directly on these buttons to choose a particular answer. " +msgstr "" + +#: src/reviewer.md:14 +msgid "To make reviewing faster, you can configure gestures (for example taps and swipes) to answer cards without using the buttons. See the [preferences section](settings.md) for more information on configuring gestures." +msgstr "" + +#: src/reviewer.md:17 +msgid "The App Bar at the top of the study screen has several buttons for performing various common actions. The number of buttons which are shown is determined automatically by Android based on the size and resolution of your screen. If there is not enough space to show the button for a given action, then the action will be available from the menu instead. If you are unsure what a button does, you can long-tap on it to see the name of the action. The following action are available:" +msgstr "" + +#: src/reviewer.md:20 +msgid "Undo the answer you chose for the last card you studied (button always shown)." +msgstr "" + +#: src/reviewer.md:22 +msgid "Mark Card" +msgstr "" + +#: src/reviewer.md:23 +msgid "Adds a **marked** tag to the current note, so it can be easily found in the browser. This is useful when you want to take some action on the note at a later date, such as looking up a word when you get home. Marked cards also show a small star in the upper-right-hand corner during reviews." +msgstr "" + +#: src/reviewer.md:26 +msgid "Flag Card" +msgstr "" + +#: src/reviewer.md:27 +msgid "Adds a color coded **flag** (red, orange, green, or blue) This can be used as a general purpose indicator to differentiate your cards. Flags are represented by a number from 1-4, corresponding to the previously listed colors." +msgstr "" + +#: src/reviewer.md:30 +msgid "Edit Card" +msgstr "" + +#: src/reviewer.md:31 +msgid "Open the edit note screen, where you can change the content displayed on the flashcard (see the [editing notes section](editing-notes.md) for more help)" +msgstr "" + +#: src/reviewer.md:33 +msgid "Hide / Delete" +msgstr "" + +#: src/reviewer.md:34 +msgid "Give options to bury, suspend, or delete the current note or card" +msgstr "" + +#: src/reviewer.md:36 +msgid "**Bury card / Bury note:** Hides a card or all of the note’s cards from review until the next day. (If you want to unbury cards before then, you can choose “unbury” from the long-press menu in the [deck list](deck-picker.md), or from the [deck overview screen](deck-overview.md).) This is useful if you cannot answer the card at the moment or you want to come back to it another time. Burying can also happen automatically for cards of the same note. If cards were in learning when they are buried, they are moved back to the new card queue or review queue prior to being buried." +msgstr "" + +#: src/reviewer.md:37 +msgid "**Suspend card / Suspend note:** Hides a card or all of the note’s cards from review until they are manually unsuspended (by long-tapping a card in the [card browser](browser.md)). This is useful if you want to avoid reviewing the note for some time, but don’t want to delete it. If cards were in learning when they are suspended, they are moved back to the new card queue or review queue prior to being suspended." +msgstr "" + +#: src/reviewer.md:38 +msgid "**Delete note:** Deletes the note and all of its cards." +msgstr "" + +#: src/reviewer.md:40 +msgid "Replay Audio" +msgstr "" + +#: src/reviewer.md:41 +msgid "If the card has audio on the front or back, it will be played again." +msgstr "" + +#: src/reviewer.md:43 +msgid "Enable / Disable Whiteboard" +msgstr "" + +#: src/reviewer.md:44 +msgid "This action enables or disables the whiteboard feature for the current deck. The whiteboard feature allows you to draw on the screen, which is particularly useful for practicing drawing characters from languages such as Japanese. When the whiteboard has been enabled for the current deck, two new actions will become available for clearing and hiding the whiteboard. Disabling the whiteboard will hide these actions as well as the whiteboard itself." +msgstr "" + +#: src/reviewer.md:47 +msgid "Open the deck specific study options. See the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options." +msgstr "" + +#: src/reviewer.md:49 +msgid "Check Pronunciation" +msgstr "" + +#: src/reviewer.md:50 +msgid "This action enables or disables the temporary audio recorder toolbar at the top of the card. This feature allows you to record your voice and replay it. It is used primarily to check your pronunciation. This toolbar is composed of three buttons: play, stop playing and record microphone audio. This tool can be used while viewing either the question or the answer." +msgstr "" + +#: src/reviewer.md:52 +msgid "Reaching the end of the study session" +msgstr "" + +#: src/reviewer.md:53 +msgid "When you've finished the cards that are due to be studied today, you'll be taken back to the decks list and shown a congratulations message. From here you can select a different deck, or if you've finished studying for the day, you can simply tap the home button in order to close AnkiDroid (and you can also do this in the middle of reviews if you wish)." +msgstr "" + +#: src/reviewer.md:55 +msgid "If you wish to keep studying the same deck further, tap on the deck again which will give you several options for continued study. Please see the [filtered deck](filtered-deck.md) section for more on custom study." +msgstr "" + +#: src/adding-notes.md:3 +msgid "[Type](#type)" +msgstr "" + +#: src/adding-notes.md:4 +msgid "[Deck](#deck)" +msgstr "" + +#: src/adding-notes.md:5 +msgid "[Fields](#fields)" +msgstr "" + +#: src/adding-notes.md:6 +msgid "[Media Buttons](#media-buttons)" +msgstr "" + +#: src/adding-notes.md:7 +msgid "[Tags](#tags)" +msgstr "" + +#: src/adding-notes.md:8 +msgid "[Cards](#cards)" +msgstr "" + +#: src/adding-notes.md:10 +msgid "__Note:__ _This section onwards assumes you understand what [notes, fields, card templates, and note types](https://docs.ankiweb.net/getting-started.html#notes--fields) are_" +msgstr "" + +#: src/adding-notes.md:12 +msgid "To add a new note, tap the **+** button at the bottom of the deck list and choose **Add**." +msgstr "" + +#: src/adding-notes.md:14 +msgid "![adding.png](img/5-adding.png)" +msgstr "" + +#: src/adding-notes.md:16 +msgid "The following controls are available in the add note screen:" +msgstr "" + +#: src/adding-notes.md:18 +msgid "Type" +msgstr "" + +#: src/adding-notes.md:19 +msgid "Allows you to select the type of note you'd like to add. For most purposes the **Basic** note type is sufficient, but for example if you would like an extra card generated which is the reverse of the main card (i.e. shows the **Back** field on the front of the card), you could chose the **Basic (and reversed card)** note type." +msgstr "" + +#: src/adding-notes.md:22 +msgid "Deck" +msgstr "" + +#: src/adding-notes.md:23 +msgid "Allows you to change the deck the generated card/cards will be added to." +msgstr "" + +#: src/adding-notes.md:25 +msgid "Fields" +msgstr "" + +#: src/adding-notes.md:26 +msgid "Below the deck selector are the fields for the note (for example the **Basic** note type has two fields **Front** and **Back**). When you tap on a field, a keyboard will come up, allowing you to type in information." +msgstr "" + +#: src/adding-notes.md:28 +msgid "Media Buttons" +msgstr "" + +#: src/adding-notes.md:29 +msgid "Next to each field is an attach icon, which allows you to add media to your note (this feature is currently in the experimental phase). \n" +"Add image lets you add images either via your device's camera (if it has one), or from your photo library. Record audio allows you to record your voice and place it into a field. The advanced editor lets you automatically search for translations or pronunciation audio files online." +msgstr "" + +#: src/adding-notes.md:33 +msgid "Tags" +msgstr "" + +#: src/adding-notes.md:34 +msgid "Brings up a dialog which lets you add / remove tags from the note." +msgstr "" + +#: src/adding-notes.md:36 +msgid "Cards" +msgstr "" + +#: src/adding-notes.md:37 +msgid "Shows the names of the cards which will be generated for the selected note type. Tapping on this button will bring up a dialog which lets you preview the source code for the card template of the selected note type. From here you can edit, preview, add, and delete card templates. See the [cards and templates section](https://docs.ankiweb.net/templates/intro.html) of the Anki Desktop manual for more information about card templates." +msgstr "" + +#: src/adding-notes.md:39 +msgid "Long press in a text entry field to add a cloze deletion around the selected text, or an empty cloze deletion if there is no selected text." +msgstr "" + +#: src/adding-notes.md:41 +msgid "When you've finished typing in the content of a note, tap the tick icon in the app bar at the top to add it to your collection. Alternatively, if you want to go back to what you were doing without saving, you can tap the app icon, or use the hardware back button." +msgstr "" + +#: src/editing-notes.md:2 +msgid "The edit note screen can be opened by choosing edit while reviewing, or by opening a card in the browser. The edit screen is similar to the add new note screen mentioned above, with some key differences:" +msgstr "" + +#: src/editing-notes.md:5 +msgid "Changing the deck operates on the selected card (which is underlined in the **Cards** box). If a note type is chosen which has more than one card, only the currently selected card will be moved to the new deck." +msgstr "" + +#: src/editing-notes.md:8 +msgid "Changing the **Type** dropdown selector changes to the note type edit mode. In this mode, editing the content of the note (i.e. deck, fields, etc) is disabled, and if a custom note type with more than two fields is being used, additional buttons will appear which let you control the mapping of the fields to the new note type." +msgstr "" + +#: src/editing-notes.md:11 +msgid "If a note type is selected which has less cards than the original note type, only the first n cards will be kept. For example changing from **Basic (and reversed card)** to **Basic** will lead to only the first card being kept. To warn you of this, the text in the **Cards** box will appear red, and a confirmation dialog will be shown before the note is saved." +msgstr "" + +#: src/editing-notes.md:14 +msgid "Hint: to change the type for multiple notes in one go, or to customize the mapping between cards, use the **Change note type** option in the browser on Anki Desktop." +msgstr "" + +#: src/editing-notes.md:16 +msgid "There are also several advanced options available in the main menu:" +msgstr "" + +#: src/editing-notes.md:18 +msgid "Add note" +msgstr "" + +#: src/editing-notes.md:19 +msgid "Create a new empty note" +msgstr "" + +#: src/editing-notes.md:21 +msgid "Copy card" +msgstr "" + +#: src/editing-notes.md:22 +msgid "Copy the current note to a new editable note" +msgstr "" + +#: src/editing-notes.md:24 +msgid "Reset progress" +msgstr "" + +#: src/editing-notes.md:25 +msgid "Move the card to the end of the new card queue. The current state of the card is cleared, but not its revision history." +msgstr "" + +#: src/editing-notes.md:27 src/keyboard-shortcuts.md:59 +msgid "Reschedule" +msgstr "" + +#: src/editing-notes.md:28 +msgid "Allows you to reschedule as a review card on a given date. This is useful if you have imported already-learnt material, and you want to start it off with higher initial intervals." +msgstr "" + +#: src/browser.md:9 +msgid "[Searching](#searching)" +msgstr "" + +#: src/browser.md:10 +msgid "[tag:marked](#tagmarked)" +msgstr "" + +#: src/browser.md:11 +msgid "[is:due](#isdue)" +msgstr "" + +#: src/browser.md:12 +msgid "[front:rabbit](#frontrabbit)" +msgstr "" + +#: src/browser.md:13 +msgid "[flag:1](#flag1)" +msgstr "" + +#: src/browser.md:15 +msgid "You can search for or browse cards by tapping the **Card browser** button from the [navigation drawer](drawer.md)." +msgstr "" + +#: src/browser.md:17 +msgid "![img/6-browser.png](img/6-browser.png)" +msgstr "" + +#: src/browser.md:19 +msgid "The browser screen starts by displaying all the cards in the currently selected deck. You can search for cards in the selected deck by tapping the magnifying glass icon in the top. You can change the selected deck (or change to all decks) by choosing the deck from the dropdown list on the top left." +msgstr "" + +#: src/browser.md:21 +msgid "By default, the first column in the browser gives the text which will be shown on the question (i.e. front side) of the flashcard, and the second column shows the text from the answer (i.e. the back side) of the flashcard. " +msgstr "" + +#: src/browser.md:23 +msgid "The first column can also be configured to show the [sort field](https://docs.ankiweb.net/editing.html#customizing-fields) for a more compact display. The second column can be configured to show many different parameters by tapping the drop down menu in the column heading. " +msgstr "" + +#: src/browser.md:25 +msgid "Note that the content of the columns is dynamically calculated as your scroll through the list of the cards." +msgstr "" + +#: src/browser.md:27 +msgid "From the search results, you can tap on a card to edit it (see the [edit note section](editing-notes.md) above), or long-tapping on it will show a menu allowing you to perform the following actions:" +msgstr "" + +#: src/browser.md:29 +msgid "Mark / unmark note" +msgstr "" + +#: src/browser.md:30 +msgid "Add / remove the **marked** tag from the note. Cards with a marked note are highlighted in purple." +msgstr "" + +#: src/browser.md:32 +msgid "Flag card" +msgstr "" + +#: src/browser.md:33 +msgid "Change or remove the color coded **flag** on the card. Cards with a flag are highlighted in the flags color." +msgstr "" + +#: src/browser.md:35 +msgid "Suspend / unsuspend card" +msgstr "" + +#: src/browser.md:36 +msgid "Suspended cards are highlighted in yellow, and are not shown during review." +msgstr "" + +#: src/browser.md:38 src/gestures.md:107 +msgid "Delete note" +msgstr "" + +#: src/browser.md:39 +msgid "Delete the note of the currently selected card, and all cards belonging to that note. This action cannot be undone without [restoring from backup](backups.md)." +msgstr "" + +#: src/browser.md:41 +msgid "Preview" +msgstr "" + +#: src/browser.md:42 +msgid "Render the currently selected card so that you can see what it looks like in the reviewer." +msgstr "" + +#: src/browser.md:44 +msgid "Select multiple cards" +msgstr "" + +#: src/browser.md:45 +msgid "Long-tapping on a single card will select the single card. While that card is selected, if you long-tap on another card on your screen, then all of the cards between the first selected card and the last card will be selected. This allows for actions to be performed on multiple cards at once." +msgstr "" + +#: src/browser.md:47 +msgid "Searching" +msgstr "" + +#: src/browser.md:48 +msgid "AnkiDroid supports all the search strings that the desktop version of Anki does, allowing you to perform quite complex searches. Some examples:" +msgstr "" + +#: src/browser.md:50 +msgid "tag:marked" +msgstr "" + +#: src/browser.md:51 +msgid "show cards that with the tag **marked**" +msgstr "" + +#: src/browser.md:53 +msgid "is:due" +msgstr "" + +#: src/browser.md:54 +msgid "show only cards that are waiting for review" +msgstr "" + +#: src/browser.md:56 +msgid "front:rabbit" +msgstr "" + +#: src/browser.md:57 +msgid "show only cards where the front field is exactly **rabbit** " +msgstr "" + +#: src/browser.md:59 +msgid "flag:1" +msgstr "" + +#: src/browser.md:60 +msgid "show only cards marked with a red flag" +msgstr "" + +#: src/browser.md:62 +msgid "For a full list of the possibilities, please see the section in the [desktop manual](https://docs.ankiweb.net/searching.html)." +msgstr "" + +#: src/browser.md:64 +msgid "Alternatively, some more commonly used filters (marked, suspended, and tagged cards) can be quickly applied without manually typing them by choosing them from the overflow menu. You can also save and recall common search queries from the menu." +msgstr "" + +#: src/filtered-deck.md:3 +msgid "Anki is designed to optimize the learning process, so that you study the minimum amount necessary to remember the majority of your cards. Once the congratulations screen is reached, further study becomes a case of diminishing returns: the amount of extra time spent going over the same cards again is generally not worth the moderate increase in retention you'll see." +msgstr "" + +#: src/filtered-deck.md:5 +msgid "That said, if you have a test looming, or simply want to pass some time, it's possible to keep reviewing even after you are shown the congratulations message." +msgstr "" + +#: src/filtered-deck.md:7 +msgid "A **filtered deck** is a temporary deck that contains cards based on various criteria, such as **forgotten today**, `is tagged 'hard'`, and so on. After studying cards in a filtered deck, or when the filtered deck is deleted, the cards are automatically returned to their original deck." +msgstr "" + +#: src/filtered-deck.md:9 +msgid "The easiest way to create a filtered deck is by long clicking on a deck and choosing the **custom study** option. " +msgstr "" + +#: src/filtered-deck.md:11 +msgid "Advanced users can create a filtered deck manually, by choosing **Create filtered deck** from the overflow menu in the deck list screen." +msgstr "" + +#: src/filtered-deck.md:13 +msgid "For further information on filtered decks, please see the [desktop documentation](https://docs.ankiweb.net/filtered-decks.html#filtered-decks--cramming)." +msgstr "" + +#: src/importing/importing-anki-files.md:3 +msgid "You can import Anki files (with .apkg file format) directly into AnkiDroid. Other file formats cannot be imported directly into AnkiDroid, however flashcards from most other applications can be imported into Anki Desktop on your computer, which can then be [added into AnkiDroid in the usual way](../anki-desktop.md). See the [importing section of the Anki Desktop manual](https://docs.ankiweb.net/importing/intro.html) for help on importing into Anki Desktop." +msgstr "" + +#: src/importing/importing-anki-files.md:6 +msgid "As in Anki Desktop, AnkiDroid distinguishes between [the two types of .apkg files](https://docs.ankiweb.net/exporting.html) (**collection package** and **deck package**) based on the filename. Collection packages have the name **collection.colpkg**, and when imported will completely _replace all contents_ in AnkiDroid. Any apkg file which is **_not_** named something that ends in **.colpkg** will be treated as a deck package, which will be _merged with any existing content_ when imported into to AnkiDroid." +msgstr "" + +#: src/importing/importing-anki-files.md:8 +msgid "You can import .apkg Anki collection files into AnkiDroid either by opening them using the standard Android system, or by manually importing them from within AnkiDroid:" +msgstr "" + +#: src/importing/importing-anki-files.md:10 +msgid "Open the file using Android" +msgstr "" + +#: src/importing/importing-anki-files.md:11 +msgid "Apkg files are automatically associated with AnkiDroid, so for example if you open a .apkg email attachment which you sent to yourself, then AnkiDroid will automatically open the file and confirm if you want to import it. Simply click OK and the apkg file will be imported." +msgstr "" + +#: src/importing/importing-anki-files.md:13 +msgid "Import the file manually in AnkiDroid" +msgstr "" + +#: src/importing/importing-anki-files.md:14 +msgid "You can also manually import .apkg files as follows:" +msgstr "" + +#: src/importing/importing-anki-files.md:16 +msgid "Connect your device to your computer using USB" +msgstr "" + +#: src/importing/importing-anki-files.md:17 +msgid "Copy the .apkg from your computer to the AnkiDroid folder on your device" +msgstr "" + +#: src/importing/importing-anki-files.md:18 +msgid "Open AnkiDroid on your device" +msgstr "" + +#: src/importing/importing-anki-files.md:19 +msgid "From the main menu in the deck list, choose _Import_" +msgstr "" + +#: src/importing/importing-anki-files.md:20 +msgid "Choose the apkg file you just copied to your device when prompted" +msgstr "" + +#: src/importing/importing-anki-files.md:21 +msgid "Tap OK" +msgstr "" + +#: src/importing/importing-anki-databases.md:3 +msgid "AnkiDroid does not support directly importing Anki database (`.anki2`) files. A database import will replace your collection with the contents the provided file. If you want to perform a full replacement, you should import a `collection[.apkg/.colpkg]` created in the app with the export function." +msgstr "" + +#: src/importing/importing-anki-databases.md:5 +msgid "Importing anki2 files manually" +msgstr "" + +#: src/importing/importing-anki-databases.md:7 +msgid "This is not officially supported, but `.anki2` files can manually be imported if needed, in cases of troubleshooting for example:" +msgstr "" + +#: src/importing/importing-anki-databases.md:9 +msgid "Create a new folder on your Android file system" +msgstr "" + +#: src/importing/importing-anki-databases.md:10 +msgid "Obtain the full path to the folder as provided by your file manager, this will typically appear as: `/storage/emulated/0/`" +msgstr "" + +#: src/importing/importing-anki-databases.md:11 +msgid "Place the `.anki2` file in the newly created folder" +msgstr "" + +#: src/importing/importing-anki-databases.md:12 +msgid "Rename the file to `collection.anki2`" +msgstr "" + +#: src/importing/importing-anki-databases.md:13 +msgid "(If applicable) Temporarily log out of your AnkiWeb account: `Settings - AnkiDroid - AnkiWeb account`" +msgstr "" + +#: src/importing/importing-anki-databases.md:14 +msgid "Open `Settings - Advanced - AnkiDroid Directory` and set the AnkiDroid Directory to the newly created folder." +msgstr "" + +#: src/exporting.md:3 +msgid "AnkiDroid can export your flashcards in the .apkg Anki file format so that you can import them into Anki Desktop, or share them with other people. As in Anki Desktop, you can either export a [collection package or deck package](https://docs.ankiweb.net/exporting.html#packaged-decks), depending on what you are trying to achieve." +msgstr "" + +#: src/exporting.md:6 +msgid "There are two export options available: **include scheduling information** and **include media**. Generally the default options are sufficient, if you choose not to include scheduling information, Anki will assume that you are sharing the deck with other people, and will remove marked and leech tags so that they will have a clean copy of it." +msgstr "" + +#: src/exporting.md:8 +msgid "Exporting collection package" +msgstr "" + +#: src/exporting.md:9 +msgid "When exporting for use in Anki Desktop, you generally want to [export your entire collection](https://docs.ankiweb.net/exporting.html#collection-colpkg), including all your review history etc. " +msgstr "" + +#: src/exporting.md:11 src/exporting.md:28 +msgid "From the main menu in the decks screen:" +msgstr "" + +#: src/exporting.md:13 +msgid "Tap the **Export** item in the menu." +msgstr "" + +#: src/exporting.md:14 +msgid "Tap **OK** using default options" +msgstr "" + +#: src/exporting.md:15 +msgid "Tap **OK** again to email the exported collection.apkg file to yourself, or alternatively you can manually copy to your computer using USB" +msgstr "" + +#: src/exporting.md:17 +msgid "To import the file on your computer:" +msgstr "" + +#: src/exporting.md:19 +msgid "Save the file **collection.apkg** to your desktop" +msgstr "" + +#: src/exporting.md:20 +msgid "Double-click on the file to start Anki." +msgstr "" + +#: src/exporting.md:21 +msgid "Confirm you wish to replace, so that the deck from your mobile device overwrites the old data on your desktop." +msgstr "" + +#: src/exporting.md:23 +msgid "After importing, you can delete the apkg file on your desktop if you wish." +msgstr "" + +#: src/exporting.md:25 +msgid "Exporting deck package" +msgstr "" + +#: src/exporting.md:26 +msgid "If you want to share a deck in AnkiDroid with another user, you can export a deck package. " +msgstr "" + +#: src/exporting.md:30 +msgid "Long tap on the deck you wish to export" +msgstr "" + +#: src/exporting.md:31 +msgid "Tap **Export**" +msgstr "" + +#: src/exporting.md:32 +msgid "Tap **OK** using the default options" +msgstr "" + +#: src/exporting.md:33 +msgid "Tap **OK** again to email the exported apkg to another user" +msgstr "" + +#: src/backups.md:3 +msgid "AnkiDroid will automatically create backups of your collection for you. The backups include all your cards and statistics, but do not include sounds or images." +msgstr "" + +#: src/backups.md:5 +msgid "The backup is taken in the background when you first start the app. A backup will only happen if more than 5 hours has elapsed since the last time a backup was created. By default, AnkiDroid will store the last 8 backups; this number can be changed in the main settings." +msgstr "" + +#: src/backups.md:8 +msgid "You can restore a backup by choosing the _restore from backup_ option from the main menu of the [decks screen](deck-picker.md)." +msgstr "" + +#: src/settings.md:3 +msgid "[AnkiDroid](#ankidroid)" +msgstr "" + +#: src/settings.md:4 +msgid "[AnkiWeb account](#ankiweb-account)" +msgstr "" + +#: src/settings.md:5 +msgid "[Fetch media on sync](#fetch-media-on-sync)" +msgstr "" + +#: src/settings.md:6 +msgid "[Automatic synchronization](#automatic-synchronization)" +msgstr "" + +#: src/settings.md:7 +msgid "[Deck for new cards](#deck-for-new-cards)" +msgstr "" + +#: src/settings.md:8 +msgid "[Language](#language)" +msgstr "" + +#: src/settings.md:9 +msgid "[Error reporting mode](#error-reporting-mode)" +msgstr "" + +#: src/settings.md:10 +msgid "[Notifications](#notifications)" +msgstr "" + +#: src/settings.md:11 +msgid "[Notify when](#notify-when)" +msgstr "" + +#: src/settings.md:12 +msgid "[Vibrate](#vibrate)" +msgstr "" + +#: src/settings.md:13 +msgid "[Blink light](#blink-light)" +msgstr "" + +#: src/settings.md:14 +msgid "[Reviewing](#reviewing)" +msgstr "" + +#: src/settings.md:15 +msgid "[New card position](#new-card-position)" +msgstr "" + +#: src/settings.md:16 +msgid "[Start of next day](#start-of-next-day)" +msgstr "" + +#: src/settings.md:17 +msgid "[Learn ahead limit](#learn-ahead-limit)" +msgstr "" + +#: src/settings.md:18 +msgid "[Timebox limit](#timebox-limit)" +msgstr "" + +#: src/settings.md:19 +msgid "[Display](#display)" +msgstr "" + +#: src/settings.md:20 +msgid "[Keep screen on](#keep-screen-on)" +msgstr "" + +#: src/settings.md:21 +msgid "[Fullscreen mode](#fullscreen-mode)" +msgstr "" + +#: src/settings.md:22 +msgid "[Center align](#center-align)" +msgstr "" + +#: src/settings.md:23 +msgid "[Show button time](#show-button-time)" +msgstr "" + +#: src/settings.md:24 +msgid "[Card zoom](#card-zoom)" +msgstr "" + +#: src/settings.md:25 +msgid "[Image zoom](#image-zoom)" +msgstr "" + +#: src/settings.md:26 +msgid "[Answer button size](#answer-button-size)" +msgstr "" + +#: src/settings.md:27 +msgid "[Show remaining](#show-remaining)" +msgstr "" + +#: src/settings.md:28 +msgid "[Whiteboard](#whiteboard)" +msgstr "" + +#: src/settings.md:29 +msgid "[Stroke width](#stroke-width)" +msgstr "" + +#: src/settings.md:30 +msgid "[Black strokes](#black-strokes)" +msgstr "" + +#: src/settings.md:31 +msgid "[Automatic display answer](#automatic-display-answer)" +msgstr "" + +#: src/settings.md:32 +msgid "[Time to show answer](#time-to-show-answer)" +msgstr "" + +#: src/settings.md:33 +msgid "[Time to show next question](#time-to-show-next-question)" +msgstr "" + +#: src/settings.md:34 +msgid "[Fonts](#fonts)" +msgstr "" + +#: src/settings.md:35 +msgid "[Default font](#default-font)" +msgstr "" + +#: src/settings.md:36 +msgid "[Default font applicability](#default-font-applicability)" +msgstr "" + +#: src/settings.md:37 +msgid "[Browser and editor font](#browser-and-editor-font)" +msgstr "" + +#: src/settings.md:38 +msgid "[Card browser font scaling](#card-browser-font-scaling)" +msgstr "" + +#: src/settings.md:40 +msgid "The preferences screen can be accessed by opening the navigation drawer, and choosing **Settings**. It allows you to customize various application settings and how AnkiDroid appears." +msgstr "" + +#: src/settings.md:42 +msgid "The Preferences screen is divided up into different sections, which are covered below." +msgstr "" + +#: src/settings.md:44 +msgid "AnkiDroid" +msgstr "" + +#: src/settings.md:45 +msgid "These are the general settings which affect the whole app:" +msgstr "" + +#: src/settings.md:47 +msgid "AnkiWeb account" +msgstr "" + +#: src/settings.md:48 +msgid "Change the account used for syncing with the cloud. For more information on syncing, please see [this section](anki-desktop.md)." +msgstr "" + +#: src/settings.md:50 +msgid "Fetch media on sync" +msgstr "" + +#: src/settings.md:51 +msgid "By default, AnkiDroid will sync sounds and images as well as your cards and review history. If you disable this option, sounds and images will not be downloaded from or uploaded to the sync server by AnkiDroid." +msgstr "" + +#: src/settings.md:54 +msgid "Automatic synchronization" +msgstr "" + +#: src/settings.md:55 +msgid "Enable this option if you want AnkiDroid to sync every time you open and close the app. There is a limit of once every ten minutes for this behavior. Once a sync begins you can cancel it by pressing your device's back button, however it can take some time for the cancellation to take effect." +msgstr "" + +#: src/settings.md:57 +msgid "Users that want more fine-grained control over when sync occurred might like to use a 3rd party app like Tasker to automate synchronization. See the " +msgstr "" + +#: src/settings.md:57 +msgid "API documentation" +msgstr "" + +#: src/settings.md:57 +msgid " for more information on this." +msgstr "" + +#: src/settings.md:59 +msgid "Deck for new cards" +msgstr "" + +#: src/settings.md:60 +msgid "The default of **Use current deck** means that Anki saves the last-used note type for each deck and selects it again then next time you choose the deck (and, in addition, will start with the current deck selected when choosing Add from anywhere). The other option, **Decide by note type,** saves the last-used deck for each note type (and opens the add window to the last-used note type when you choose Add). This may be more convenient if you always use a single note type for each deck." +msgstr "" + +#: src/settings.md:62 +msgid "Language" +msgstr "" + +#: src/settings.md:63 +msgid "Change the language. Note: AnkiDroid translations are contributed by volunteers. If you find missing or incorrect translations, feel free to contribute to the translation project. More details can be found on the " +msgstr "" + +#: src/settings.md:63 +msgid "AnkiDroid Wiki" +msgstr "" + +#: src/settings.md:63 src/advanced-features/custom-fonts.md:15 +msgid "." +msgstr "" + +#: src/settings.md:65 +msgid "Error reporting mode" +msgstr "" + +#: src/settings.md:66 +msgid "Control whether or not AnkiDroid asks your permission before sending error reports to our error reporting system when AnkiDroid crashes. You can also disable the reporting feature entirely if you wish." +msgstr "" + +#: src/settings.md:68 +msgid "Notifications" +msgstr "" + +#: src/settings.md:69 +msgid "This subsection allows you configure when and how AnkiDroid shows alerts in the Android notification bar." +msgstr "" + +#: src/settings.md:71 +msgid "Notify when" +msgstr "" + +#: src/settings.md:72 +msgid "**Never notify** will disable all notifications from AnkiDroid. **Pending messages available** will only show important status updates like when a sync completed. **More than n cards due** will show a notification when you have more than n cards due (requires the widget to be enabled)." +msgstr "" + +#: src/settings.md:74 +msgid "Vibrate" +msgstr "" + +#: src/settings.md:75 +msgid "Checking this will make your device vibrate when showing a notification" +msgstr "" + +#: src/settings.md:77 +msgid "Blink light" +msgstr "" + +#: src/settings.md:78 +msgid "Checking this will make your device light blink when an unread notification exists (if your device has a notification LED)" +msgstr "" + +#: src/settings.md:81 +msgid "Reviewing" +msgstr "" + +#: src/settings.md:83 +msgid "The reviewing screen allows you to customize how AnkiDroid behaves when you're reviewing cards. Note that only the reviewing settings which are applied to **all decks** are shown here. There are more settings related to reviewing which are **deck specific**. These deck specific settings are located in **Deck options**." +msgstr "" + +#: src/settings.md:86 +msgid "New card position" +msgstr "" + +#: src/settings.md:87 +msgid "Controls when new cards are shown: either mixed with, after, or before all reviews." +msgstr "" + +#: src/settings.md:89 +msgid "Start of next day" +msgstr "" + +#: src/settings.md:90 +msgid "Controls when AnkiDroid should start showing the next day's cards. The default setting of 4AM ensures that if you're studying around midnight, you won't have two days worth of cards shown to you in one session. If you stay up very late or wake up very early, you may want to adjust this to a time you're usually sleeping." +msgstr "" + +#: src/settings.md:93 +msgid "Learn ahead limit" +msgstr "" + +#: src/settings.md:94 +msgid "The Learn ahead limit tells AnkiDroid how to behave when there is nothing left to study in the current deck but cards in learning. The default setting of 20 minutes tells AnkiDroid that cards should be shown early if they are due to be shown in less than 20 minutes and there's nothing else to do. If you set this to 0, Anki will always wait the full period, showing the congratulations screen until the remaining cards are ready to be reviewed." +msgstr "" + +#: src/settings.md:96 +msgid "Timebox limit" +msgstr "" + +#: src/settings.md:97 +msgid "Timeboxing is a technique to help you focus by dividing a longer activity (such as a 30 minute study session) into smaller blocks. If you set the timebox time limit to a non-zero number of minutes, AnkiDroid will periodically show a message saying you how many cards you've managed to study during the prescribed time limit." +msgstr "" + +#: src/settings.md:99 +msgid "Display" +msgstr "" + +#: src/settings.md:100 +msgid "This subsection relates to the way cards are displayed during reviewing" +msgstr "" + +#: src/settings.md:102 +msgid "Keep screen on" +msgstr "" + +#: src/settings.md:103 +msgid "Ignore the automatic screen timeout setting in Android to always keep the screen on." +msgstr "" + +#: src/settings.md:105 +msgid "Fullscreen mode" +msgstr "" + +#: src/settings.md:106 +msgid "Switches to an immersive fullscreen mode so that you can use more of the screen. You can choose between **Hide the system bars** which will hide the system status bar, action bar, and bottom navigation buttons. Alternatively you can choose **Hide the system bars and answer buttons**, which will hide everything except for the actual card content itself. You can temporarily exit fullscreen mode by swiping inwards (i.e. down or up) from the system bars." +msgstr "" + +#: src/settings.md:108 +msgid "_Note that immersive fullscreen mode is only supported on Android 4.4+_" +msgstr "" + +#: src/settings.md:110 +msgid "Center align" +msgstr "" + +#: src/settings.md:111 +msgid "By default AnkiDroid tries to show cards exactly as they are shown on Anki Desktop, however if you prefer your cards to be center aligned vertically in AnkiDroid then you can enable this feature." +msgstr "" + +#: src/settings.md:113 +msgid "Show button time" +msgstr "" + +#: src/settings.md:114 +msgid "By default, the answer buttons will display the time a card will next be shown. If you disable this option, the times will not appear, and only labels like **Again**, **Good** and **Easy** will be shown." +msgstr "" + +#: src/settings.md:116 +msgid "Card zoom" +msgstr "" + +#: src/settings.md:117 +msgid "Here you can increase the zoom level of the card content (excluding images). You can use this option if you want to increase the font size for all cards." +msgstr "" + +#: src/settings.md:119 +msgid "Image zoom" +msgstr "" + +#: src/settings.md:120 +msgid "Here you can increase the zoom level of any images embedded in your cards." +msgstr "" + +#: src/settings.md:122 +msgid "Answer button size" +msgstr "" + +#: src/settings.md:123 +msgid "If you find it difficult to press the answer button, you can use this setting to make it bigger." +msgstr "" + +#: src/settings.md:125 +msgid "Show remaining" +msgstr "" + +#: src/settings.md:126 +msgid "Disabling this allows you to hide the card count in the top left of the screen." +msgstr "" + +#: src/settings.md:128 +msgid "Whiteboard" +msgstr "" + +#: src/settings.md:129 +msgid "This subsection controls the whiteboard in the reviewer. Note: the whiteboard must be enabled in each deck individually from the menu in the study screen." +msgstr "" + +#: src/settings.md:132 +msgid "Stroke width" +msgstr "" + +#: src/settings.md:133 +msgid "Control the stroke width of the whiteboard. Reducing the stroke width may allow you to draw with more detail." +msgstr "" + +#: src/settings.md:135 +msgid "Black strokes" +msgstr "" + +#: src/settings.md:136 +msgid "Use black strokes instead of color, which may reduce memory usage. Note: this setting doesn't apply when night mode is enabled." +msgstr "" + +#: src/settings.md:138 +msgid "Automatic display answer" +msgstr "" + +#: src/settings.md:139 +msgid "The automatic display answer feature allows you to have the answer shown automatically after some timeout period. You can also have the next question shown automatically; in this case the card is assumed to be failed (i.e. the again button is automatically chosen)" +msgstr "" + +#: src/settings.md:141 +msgid "Time to show answer" +msgstr "" + +#: src/settings.md:142 +msgid "Time to wait until answer is automatically shown" +msgstr "" + +#: src/settings.md:144 +msgid "Time to show next question" +msgstr "" + +#: src/settings.md:145 +msgid "Time to wait until next question is automatically shown." +msgstr "" + +#: src/settings.md:147 +msgid "Fonts" +msgstr "" + +#: src/settings.md:148 +msgid "In this screen you can change the font used by AnkiDroid, and some scaling options related to fonts. See the [custom fonts](advanced-features/custom-fonts.md) section for more information about using custom fonts." +msgstr "" + +#: src/settings.md:151 +msgid "Default font" +msgstr "" + +#: src/settings.md:152 +msgid "Choose the default font used by the AnkiDroid reviewer. You can add fonts to this list by copying them to the **fonts** folder." +msgstr "" + +#: src/settings.md:154 +msgid "Default font applicability" +msgstr "" + +#: src/settings.md:155 +msgid "The default setting is to only use the default font when no font has been specified in the card styling via Anki Desktop, however you can also force the default font to be applied, ignoring any font specification in the card styling." +msgstr "" + +#: src/settings.md:157 +msgid "Browser and editor font" +msgstr "" + +#: src/settings.md:158 +msgid "The font to be used by the browser and editor" +msgstr "" + +#: src/settings.md:160 +msgid "Card browser font scaling" +msgstr "" + +#: src/settings.md:161 +msgid "Lets you change the font size used in the card browser." +msgstr "" + +#: src/gestures.md:3 +msgid "[Actions](#actions)" +msgstr "" + +#: src/gestures.md:4 +msgid "[No action](#no-action)" +msgstr "" + +#: src/gestures.md:5 +msgid "[Answer button 1](#answer-button-1)" +msgstr "" + +#: src/gestures.md:6 +msgid "[Answer button 2](#answer-button-2)" +msgstr "" + +#: src/gestures.md:7 +msgid "[Answer button 3](#answer-button-3)" +msgstr "" + +#: src/gestures.md:8 +msgid "[Answer button 4](#answer-button-4)" +msgstr "" + +#: src/gestures.md:9 +msgid "[Answer recommended (green)](#answer-recommended-green)" +msgstr "" + +#: src/gestures.md:10 +msgid "[Answer better than recommended](#answer-better-than-recommended)" +msgstr "" + +#: src/gestures.md:12 +msgid "[Edit card](#edit-card)" +msgstr "" + +#: src/gestures.md:13 +msgid "[Mark](#mark)" +msgstr "" + +#: src/gestures.md:14 +msgid "[Lookup expression](#lookup-expression)" +msgstr "" + +#: src/gestures.md:15 +msgid "[Bury card](#bury-card)" +msgstr "" + +#: src/gestures.md:16 +msgid "[Suspend card](#suspend-card)" +msgstr "" + +#: src/gestures.md:17 +msgid "[Delete note](#delete-note)" +msgstr "" + +#: src/gestures.md:18 +msgid "[Play media](#play-media)" +msgstr "" + +#: src/gestures.md:19 +msgid "[Abort learning](#abort-learning)" +msgstr "" + +#: src/gestures.md:20 +msgid "[Bury note](#bury-note)" +msgstr "" + +#: src/gestures.md:21 +msgid "[Suspend note](#suspend-note)" +msgstr "" + +#: src/gestures.md:22 +msgid "[Toggle Red Flag](#toggle-red-flag)" +msgstr "" + +#: src/gestures.md:23 +msgid "[Toggle Orange Flag](#toggle-orange-flag)" +msgstr "" + +#: src/gestures.md:24 +msgid "[Toggle Green Flag](#toggle-green-flag)" +msgstr "" + +#: src/gestures.md:25 +msgid "[Toggle Blue Flag](#toggle-blue-flag)" +msgstr "" + +#: src/gestures.md:26 +msgid "[Remove Flag](#remove-flag)" +msgstr "" + +#: src/gestures.md:27 +msgid "[Advanced](#advanced)" +msgstr "" + +#: src/gestures.md:28 +msgid "[Collection path](#collection-path)" +msgstr "" + +#: src/gestures.md:29 +msgid "[Force full sync](#force-full-sync)" +msgstr "" + +#: src/gestures.md:30 +msgid "[Advanced Statistics](#advanced-statistics)" +msgstr "" + +#: src/gestures.md:31 +msgid "[Workarounds](#workarounds)" +msgstr "" + +#: src/gestures.md:32 +msgid "[Type answer into the card](#type-answer-into-the-card)" +msgstr "" + +#: src/gestures.md:33 +msgid "[Input Workaround](#input-workaround)" +msgstr "" + +#: src/gestures.md:34 +msgid "[Longclick Workaround](#longclick-workaround)" +msgstr "" + +#: src/gestures.md:35 +msgid "[Fix for Hebrew Vowels](#fix-for-hebrew-vowels)" +msgstr "" + +#: src/gestures.md:36 +msgid "[Text to Speech](#text-to-speech)" +msgstr "" + +#: src/gestures.md:37 +msgid "[Lookup Dictionary](#lookup-dictionary)" +msgstr "" + +#: src/gestures.md:38 +msgid "[Reset Languages](#reset-languages)" +msgstr "" + +#: src/gestures.md:39 +msgid "[eReader (up/down buttons)](#ereader-updown-buttons)" +msgstr "" + +#: src/gestures.md:40 +msgid "[eReader Double Scrolling](#ereader-double-scrolling)" +msgstr "" + +#: src/gestures.md:42 +msgid "AnkiDroid allows you to customize the interface, so that actions you perform frequently can be accomplished quickly by using tap and swipe gestures." +msgstr "" + +#: src/gestures.md:45 +msgid "Actions" +msgstr "" + +#: src/gestures.md:46 +msgid "The following gestures can be used:" +msgstr "" + +#: src/gestures.md:48 +msgid "Swipe up" +msgstr "" + +#: src/gestures.md:49 +msgid "Swipe down" +msgstr "" + +#: src/gestures.md:50 +msgid "Swipe left" +msgstr "" + +#: src/gestures.md:51 +msgid "Swipe right" +msgstr "" + +#: src/gestures.md:52 +msgid "Double touch" +msgstr "" + +#: src/gestures.md:53 +msgid "Touch top" +msgstr "" + +#: src/gestures.md:54 +msgid "Touch bottom" +msgstr "" + +#: src/gestures.md:55 +msgid "Touch left" +msgstr "" + +#: src/gestures.md:56 +msgid "Tough right" +msgstr "" + +#: src/gestures.md:58 +msgid "The following actions are available for each gesture:" +msgstr "" + +#: src/gestures.md:60 +msgid "No action" +msgstr "" + +#: src/gestures.md:61 +msgid "Don't do anything. Useful if you want to disable certain swipes, tap zones and so on." +msgstr "" + +#: src/gestures.md:63 +msgid "Answer button 1" +msgstr "" + +#: src/gestures.md:64 +msgid "When the answer screen is shown, choose the red button, indicating you wish to review the card again soon. This is useful when you forgot a card or wish to review it more frequently. When the question is shown, this action (and all other answer actions below) will simply show the answer." +msgstr "" + +#: src/gestures.md:69 +msgid "Answer button 2" +msgstr "" + +#: src/gestures.md:70 +msgid "When the answer screen is shown, choose the second button from the left, generally indicating you found the card hard to remember." +msgstr "" + +#: src/gestures.md:73 +msgid "Answer button 3" +msgstr "" + +#: src/gestures.md:74 +msgid "When the answer screen is shown, choose the third button from the left." +msgstr "" + +#: src/gestures.md:76 +msgid "Answer button 4" +msgstr "" + +#: src/gestures.md:77 +msgid "When the answer screen is shown, choose the fourth button from the left (when applicable)." +msgstr "" + +#: src/gestures.md:79 +msgid "Answer recommended (green)" +msgstr "" + +#: src/gestures.md:80 +msgid "When the answer screen is shown, choose the green button. This is the button you should end up using the most." +msgstr "" + +#: src/gestures.md:83 +msgid "Answer better than recommended" +msgstr "" + +#: src/gestures.md:84 +msgid "When the answer screen is shown, choose the button on the right, indicating you found the card too easy to remember and would like a much longer delay." +msgstr "" + +#: src/gestures.md:89 +msgid "Undoes the last action." +msgstr "" + +#: src/gestures.md:91 +msgid "Edit card" +msgstr "" + +#: src/gestures.md:92 +msgid "Edits the current card." +msgstr "" + +#: src/gestures.md:94 +msgid "Mark" +msgstr "" + +#: src/gestures.md:95 +msgid "Adds a tag called **Marked** the current note, so it can be easily found in a search." +msgstr "" + +#: src/gestures.md:97 +msgid "Lookup expression" +msgstr "" + +#: src/gestures.md:98 +msgid "When the lookup feature is enabled (in advanced settings), lookup an expression in the selected dictionary. Note: the expression needs to be copied to the clipboard before this action will work." +msgstr "" + +#: src/gestures.md:101 +msgid "Bury card" +msgstr "" + +#: src/gestures.md:102 +msgid "Hides the current card from review." +msgstr "" + +#: src/gestures.md:104 +msgid "Suspend card" +msgstr "" + +#: src/gestures.md:105 +msgid "Prevent current card from being shown during review until you unsuspend it via the card browser." +msgstr "" + +#: src/gestures.md:108 +msgid "Deletes the currently shown note and all of its cards." +msgstr "" + +#: src/gestures.md:110 +msgid "Play media" +msgstr "" + +#: src/gestures.md:111 +msgid "Replay any audio on the card." +msgstr "" + +#: src/gestures.md:113 +msgid "Abort learning" +msgstr "" + +#: src/gestures.md:114 +msgid "Stop reviewing and go back to the deck overview page." +msgstr "" + +#: src/gestures.md:116 +msgid "Bury note" +msgstr "" + +#: src/gestures.md:117 +msgid "Bury the current note (i.e. hide it until the next day)." +msgstr "" + +#: src/gestures.md:119 +msgid "Suspend note" +msgstr "" + +#: src/gestures.md:120 +msgid "Suspend the current note (i.e. hide it until you unsuspend it)." +msgstr "" + +#: src/gestures.md:122 +msgid "Toggle Red Flag" +msgstr "" + +#: src/gestures.md:123 +msgid "Enables the red flag, unless the flag is already red, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:125 +msgid "Toggle Orange Flag" +msgstr "" + +#: src/gestures.md:126 +msgid "Enables the orange flag, unless the flag is already orange, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:128 +msgid "Toggle Green Flag" +msgstr "" + +#: src/gestures.md:129 +msgid "Enables the green flag, unless the flag is already green, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:131 +msgid "Toggle Blue Flag" +msgstr "" + +#: src/gestures.md:132 +msgid "Enables the blue flag, unless the flag is already blue, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:134 +msgid "Remove Flag" +msgstr "" + +#: src/gestures.md:135 +msgid "Removes the flag from the card." +msgstr "" + +#: src/gestures.md:137 +msgid "Advanced" +msgstr "" + +#: src/gestures.md:138 +msgid "Some less common features for advanced users are shown here" +msgstr "" + +#: src/gestures.md:140 +msgid "Collection path" +msgstr "" + +#: src/gestures.md:141 +msgid "Change the location where AnkiDroid's data is stored (not recommended)" +msgstr "" + +#: src/gestures.md:143 +msgid "Force full sync" +msgstr "" + +#: src/gestures.md:144 +msgid "Tap this item to force a full upload or download on the next sync (for example, because you accidentally deleted a deck on one side and want to restore the deck rather than having its deletion synchronized)." +msgstr "" + +#: src/gestures.md:147 +msgid "Take into account the effect of future reviews in the **Forecast** graph. More info [here](advanced-features/advanced-statistics.md)." +msgstr "" + +#: src/gestures.md:149 +msgid "Workarounds" +msgstr "" + +#: src/gestures.md:151 +msgid "Type answer into the card" +msgstr "" + +#: src/gestures.md:153 +msgid "If you have set up your cards to ask you to type in the answer (as explained in [this section of the desktop manual](https://docs.ankiweb.net/templates/intro.html)), AnkiDroid will display a keyboard on such cards and allow you to check your answer." +msgstr "" + +#: src/gestures.md:155 +msgid "In order to improve user experience when working with the whiteboard and gestures, we use a typing box separate from the card, which is inconsistent with the way the feature works on Anki Desktop." +msgstr "" + +#: src/gestures.md:157 +msgid "For full consistency with Anki Desktop, you can enable this option which allows you to save screen area, and choose an appropriate font (e.g. Japanese vs Chinese) for the input box." +msgstr "" + +#: src/gestures.md:159 +msgid "Input Workaround" +msgstr "" + +#: src/gestures.md:160 +msgid "Some older devices couldn't gain focus into the text input box for typed-answer fields, so this was added (Hidden for API > 14)." +msgstr "" + +#: src/gestures.md:162 +msgid "Longclick Workaround" +msgstr "" + +#: src/gestures.md:163 +msgid "Some older devices couldn't detect longclick for initiating selecting/copying of text, so this was added (Hidden for API > 10)." +msgstr "" + +#: src/gestures.md:165 +msgid "Fix for Hebrew Vowels" +msgstr "" + +#: src/gestures.md:166 +msgid "Some older devices couldn't render Hebrew text, so this feature was added which allows the user to download and install a Hebrew font which is known to work (Hidden for API > 15)." +msgstr "" + +#: src/gestures.md:168 +msgid "Text to Speech" +msgstr "" + +#: src/gestures.md:169 +msgid "Enable this option to have Android read out all the text on your flashcards using the default text to speech engine. Google's built-in TTS engine should work; 3rd party TTS engines may or may not. AnkiDroid will ask you to select the language for the front and back of your cards once for each deck on the first time you review a card in that deck. To change the language or disable TTS for a given deck after making your initial choice, you'll need to use the **reset languages** option described below and reconfigure for each deck." +msgstr "" + +#: src/gestures.md:173 +msgid "Alternatively, if you want only fragments of cards to be read aloud, or if you want to set the TTS language for multiple decks at once, you can insert `` tags into [card templates](advanced-features/customizing-card-layout.md). For example, with the following template for the back of the card" +msgstr "" + +#: src/gestures.md:178 +msgid "answer" +msgstr "" + +#: src/gestures.md:180 src/gestures.md:194 +msgid "\"android\"" +msgstr "" + +#: src/gestures.md:180 src/gestures.md:194 +msgid "\"en_GB\"" +msgstr "" + +#: src/gestures.md:185 +msgid "only the `EnglishTranslation` field will be read aloud in a British English voice; the `Example` field, lying outside the `` tag, won't be read aloud. Every `` tag needs to have the following two attributes:" +msgstr "" + +#: src/gestures.md:187 +msgid "**`service`**: should be set to **`android`**, otherwise the contents of the **``** tag won't be read aloud;" +msgstr "" + +#: src/gestures.md:188 +msgid "**`voice`**: used to select the TTS language; should be a [two- or three- letter language code](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes), optionally followed by an underscore and a [two-letter country or region code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). A frequently updated list of languages supported by the Google TTS engine can be found on its [Wikipedia page](https://en.wikipedia.org/wiki/Google_Text-to-Speech)." +msgstr "" + +#: src/gestures.md:190 +msgid "To make both AnkiDroid and the [AwesomeTTS](https://ankiatts.appspot.com) plugin to the desktop application use a TTS engine to read aloud certain card fragments, put the `` tag inside the `` tag recognised by AwesomeTTS, or vice versa. An example:" +msgstr "" + +#: src/gestures.md:193 +msgid "\"sapi5js\"" +msgstr "" + +#: src/gestures.md:193 +msgid "\"39\"" +msgstr "" + +#: src/gestures.md:193 src/gestures.md:193 +msgid "\"0\"" +msgstr "" + +#: src/gestures.md:193 +msgid "\"Microsoft David Desktop\"" +msgstr "" + +#: src/gestures.md:193 +msgid "\"100\"" +msgstr "" + +#: src/gestures.md:200 +msgid "AnkiDroid automatically ignores `` tags selecting an unknown TTS service. In contrast, AwesomeTTS may display a warning message on encountering the `` tag; to suppress it, uncheck the two _Show errors_ checkboxes on the _Playback_ tab of the _AwesomeTTS: Configuration_ dialog in the desktop application." +msgstr "" + +#: src/gestures.md:202 +msgid "_This feature may be removed in the future in favor of a separately downloadable plugin._" +msgstr "" + +#: src/gestures.md:204 +msgid "Lookup Dictionary" +msgstr "" + +#: src/gestures.md:205 +msgid "Dictionary to use to lookup words copied to the clipboard in the reviewer. After setting up a dictionary, do the following to perform the lookup:" +msgstr "" + +#: src/gestures.md:207 +msgid "Longclick on the text you want to copy in the reviewer" +msgstr "" + +#: src/gestures.md:208 +msgid "After selecting the word you want to copy, press the **copy** icon in the app bar at the top of the screen" +msgstr "" + +#: src/gestures.md:209 +msgid "Tap once anywhere on the flashcard" +msgstr "" + +#: src/gestures.md:210 +msgid "A magnifying glass icon should appear, which performs the lookup when clicked" +msgstr "" + +#: src/gestures.md:212 +msgid "Alternatively, the lookup action can be performed via a gesture." +msgstr "" + +#: src/gestures.md:214 src/gestures.md:222 +msgid "_This feature will likely be removed in the future in favor of a plugin_" +msgstr "" + +#: src/gestures.md:216 +msgid "Reset Languages" +msgstr "" + +#: src/gestures.md:217 +msgid "Useful for resetting the TTS language" +msgstr "" + +#: src/gestures.md:219 +msgid "eReader (up/down buttons)" +msgstr "" + +#: src/gestures.md:220 +msgid "Support for eReader hardware buttons (see [issue 1625](https://github.com/ankidroid/Anki-Android/issues/1625))" +msgstr "" + +#: src/gestures.md:224 +msgid "eReader Double Scrolling" +msgstr "" + +#: src/gestures.md:225 +msgid "Double the scrolling distance when using the eReader hardware buttons" +msgstr "" + +#: src/note-formatting-toolbar.md:3 +msgid "The note formatting toolbar contains basic text formatting buttons (Bold, Italic, Underline, Horizontal Line, Insert Title, Change Font Size, [Insert MathJax](advanced-features/mathjax.md) and Insert Cloze Deletion)." +msgstr "" + +#: src/note-formatting-toolbar.md:5 +msgid "It also allows the addition of user-defined toolbar buttons using HTML. HTML is a powerful language allowing nearly endless customization of your cards. [Our wiki](https://github.com/ankidroid/Anki-Android/wiki/Note-Editor-Toolbar-HTML-Samples) contains common code samples to get you started." +msgstr "" + +#: src/note-formatting-toolbar.md:7 +msgid "A user-defined toolbar button can be removed by long pressing the button and selecting **Delete**." +msgstr "" + +#: src/keyboard-shortcuts.md:3 +msgid "Home Screen" +msgstr "" + +#: src/keyboard-shortcuts.md:5 src/keyboard-shortcuts.md:13 +#: src/keyboard-shortcuts.md:32 src/keyboard-shortcuts.md:53 +#: src/keyboard-shortcuts.md:64 +msgid "Shortcut" +msgstr "" + +#: src/keyboard-shortcuts.md:5 src/keyboard-shortcuts.md:13 +#: src/keyboard-shortcuts.md:32 src/keyboard-shortcuts.md:53 +#: src/keyboard-shortcuts.md:64 +msgid "Purpose" +msgstr "" + +#: src/keyboard-shortcuts.md:7 src/keyboard-shortcuts.md:55 +msgid "A" +msgstr "" + +#: src/keyboard-shortcuts.md:7 +msgid "Add Note" +msgstr "" + +#: src/keyboard-shortcuts.md:8 src/keyboard-shortcuts.md:40 +msgid "B" +msgstr "" + +#: src/keyboard-shortcuts.md:9 +msgid "Y" +msgstr "" + +#: src/keyboard-shortcuts.md:9 +msgid "Sync" +msgstr "" + +#: src/keyboard-shortcuts.md:11 +msgid "Reviewer" +msgstr "" + +#: src/keyboard-shortcuts.md:15 src/keyboard-shortcuts.md:49 +msgid "1" +msgstr "" + +#: src/keyboard-shortcuts.md:15 src/keyboard-shortcuts.md:15 +#: src/keyboard-shortcuts.md:15 src/keyboard-shortcuts.md:20 +#: src/keyboard-shortcuts.md:27 +msgid "," +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "2" +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "3" +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "4" +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "Press the nth answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:16 +msgid "Gamepad Y" +msgstr "" + +#: src/keyboard-shortcuts.md:16 +msgid "Flip Card/Press the first answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:17 +msgid "Gamepad X" +msgstr "" + +#: src/keyboard-shortcuts.md:17 +msgid "Flip Card/Press the second answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:18 +msgid "Gamepad B" +msgstr "" + +#: src/keyboard-shortcuts.md:18 +msgid "Flip Card/Press the third answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:19 +msgid "Gamepad A" +msgstr "" + +#: src/keyboard-shortcuts.md:19 +msgid "Flip Card/Press the fourth answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:20 +msgid "Space" +msgstr "" + +#: src/keyboard-shortcuts.md:20 src/keyboard-shortcuts.md:34 +msgid "Enter" +msgstr "" + +#: src/keyboard-shortcuts.md:20 +msgid "Flip Card/Answer Good" +msgstr "" + +#: src/keyboard-shortcuts.md:21 +msgid "e" +msgstr "" + +#: src/keyboard-shortcuts.md:21 src/keyboard-shortcuts.md:56 +msgid "Edit Note" +msgstr "" + +#: src/keyboard-shortcuts.md:22 +msgid "\\*" +msgstr "" + +#: src/keyboard-shortcuts.md:22 src/keyboard-shortcuts.md:58 +msgid "Mark Note" +msgstr "" + +#: src/keyboard-shortcuts.md:23 +msgid "\\-" +msgstr "" + +#: src/keyboard-shortcuts.md:23 +msgid "Bury Card" +msgstr "" + +#: src/keyboard-shortcuts.md:24 +msgid "=" +msgstr "" + +#: src/keyboard-shortcuts.md:24 +msgid "Bury Note" +msgstr "" + +#: src/keyboard-shortcuts.md:25 +msgid "@" +msgstr "" + +#: src/keyboard-shortcuts.md:25 +msgid "Suspend Card" +msgstr "" + +#: src/keyboard-shortcuts.md:26 +msgid "!" +msgstr "" + +#: src/keyboard-shortcuts.md:26 +msgid "Suspend Note" +msgstr "" + +#: src/keyboard-shortcuts.md:27 +msgid "r" +msgstr "" + +#: src/keyboard-shortcuts.md:27 +msgid "F5" +msgstr "" + +#: src/keyboard-shortcuts.md:27 +msgid "Replay Media" +msgstr "" + +#: src/keyboard-shortcuts.md:28 +msgid "z" +msgstr "" + +#: src/keyboard-shortcuts.md:30 +msgid "Note Editor" +msgstr "" + +#: src/keyboard-shortcuts.md:34 src/keyboard-shortcuts.md:39 +#: src/keyboard-shortcuts.md:40 src/keyboard-shortcuts.md:41 +#: src/keyboard-shortcuts.md:42 src/keyboard-shortcuts.md:43 +#: src/keyboard-shortcuts.md:44 src/keyboard-shortcuts.md:45 +#: src/keyboard-shortcuts.md:46 src/keyboard-shortcuts.md:47 +#: src/keyboard-shortcuts.md:48 src/keyboard-shortcuts.md:49 +#: src/keyboard-shortcuts.md:55 src/keyboard-shortcuts.md:56 +#: src/keyboard-shortcuts.md:57 src/keyboard-shortcuts.md:58 +#: src/keyboard-shortcuts.md:59 src/keyboard-shortcuts.md:66 +msgid "Ctrl" +msgstr "" + +#: src/keyboard-shortcuts.md:34 src/keyboard-shortcuts.md:39 +#: src/keyboard-shortcuts.md:40 src/keyboard-shortcuts.md:41 +#: src/keyboard-shortcuts.md:42 src/keyboard-shortcuts.md:43 +#: src/keyboard-shortcuts.md:44 src/keyboard-shortcuts.md:45 +#: src/keyboard-shortcuts.md:46 src/keyboard-shortcuts.md:47 +#: src/keyboard-shortcuts.md:47 src/keyboard-shortcuts.md:48 +#: src/keyboard-shortcuts.md:48 src/keyboard-shortcuts.md:48 +#: src/keyboard-shortcuts.md:49 src/keyboard-shortcuts.md:55 +#: src/keyboard-shortcuts.md:56 src/keyboard-shortcuts.md:57 +#: src/keyboard-shortcuts.md:58 src/keyboard-shortcuts.md:59 +#: src/keyboard-shortcuts.md:59 src/keyboard-shortcuts.md:66 +msgid "+" +msgstr "" + +#: src/keyboard-shortcuts.md:34 +msgid "Save Note" +msgstr "" + +#: src/keyboard-shortcuts.md:35 src/keyboard-shortcuts.md:57 +msgid "D" +msgstr "" + +#: src/keyboard-shortcuts.md:35 +msgid "Select Deck" +msgstr "" + +#: src/keyboard-shortcuts.md:36 +msgid "L" +msgstr "" + +#: src/keyboard-shortcuts.md:36 src/keyboard-shortcuts.md:62 +msgid "Card Template Editor" +msgstr "" + +#: src/keyboard-shortcuts.md:37 +msgid "N" +msgstr "" + +#: src/keyboard-shortcuts.md:37 +msgid "Select Note Type" +msgstr "" + +#: src/keyboard-shortcuts.md:38 +msgid "T" +msgstr "" + +#: src/keyboard-shortcuts.md:38 +msgid "Edit Tags" +msgstr "" + +#: src/keyboard-shortcuts.md:39 src/keyboard-shortcuts.md:66 +msgid "P" +msgstr "" + +#: src/keyboard-shortcuts.md:39 +msgid "Preview Note" +msgstr "" + +#: src/keyboard-shortcuts.md:40 +msgid "Bold" +msgstr "" + +#: src/keyboard-shortcuts.md:41 +msgid "I" +msgstr "" + +#: src/keyboard-shortcuts.md:41 +msgid "Italic" +msgstr "" + +#: src/keyboard-shortcuts.md:42 +msgid "U" +msgstr "" + +#: src/keyboard-shortcuts.md:42 +msgid "Underline" +msgstr "" + +#: src/keyboard-shortcuts.md:43 src/keyboard-shortcuts.md:59 +msgid "R" +msgstr "" + +#: src/keyboard-shortcuts.md:43 +msgid "Insert Horizontal Rule" +msgstr "" + +#: src/keyboard-shortcuts.md:44 +msgid "H" +msgstr "" + +#: src/keyboard-shortcuts.md:44 +msgid "Insert Title" +msgstr "" + +#: src/keyboard-shortcuts.md:45 +msgid "F" +msgstr "" + +#: src/keyboard-shortcuts.md:45 +msgid "Change Font Size" +msgstr "" + +#: src/keyboard-shortcuts.md:46 +msgid "M" +msgstr "" + +#: src/keyboard-shortcuts.md:46 +msgid "Insert MathJax Equation" +msgstr "" + +#: src/keyboard-shortcuts.md:47 src/keyboard-shortcuts.md:48 +msgid "Shift" +msgstr "" + +#: src/keyboard-shortcuts.md:47 src/keyboard-shortcuts.md:48 +msgid "C" +msgstr "" + +#: src/keyboard-shortcuts.md:47 +msgid "Insert New Cloze Deletion" +msgstr "" + +#: src/keyboard-shortcuts.md:48 src/keyboard-shortcuts.md:59 +msgid "Alt" +msgstr "" + +#: src/keyboard-shortcuts.md:48 +msgid "Insert Cloze Deletion using existing number" +msgstr "" + +#: src/keyboard-shortcuts.md:49 +msgid ".." +msgstr "" + +#: src/keyboard-shortcuts.md:49 +msgid "0" +msgstr "" + +#: src/keyboard-shortcuts.md:49 +msgid "Insert User-Defined HTML" +msgstr "" + +#: src/keyboard-shortcuts.md:55 +msgid "Select All" +msgstr "" + +#: src/keyboard-shortcuts.md:56 +msgid "E" +msgstr "" + +#: src/keyboard-shortcuts.md:57 +msgid "Change Deck" +msgstr "" + +#: src/keyboard-shortcuts.md:58 +msgid "K" +msgstr "" + +#: src/keyboard-shortcuts.md:66 +msgid "Preview Changed" +msgstr "" + +#: src/rtl.md:3 +msgid "Anki and AnkiDroid have full support for RTL languages such as Arabic, Hebrew, and Persian." +msgstr "" + +#: src/rtl.md:5 +msgid "Editing Fields as RTL" +msgstr "" + +#: src/rtl.md:6 +msgid "Fields can be marked as RTL (currently possible only from Anki Desktop) for RTL editing. When a field is marked as RTL, then the text is right-aligned in editing fields and punctuation is correctly displayed at the end (left) of sentences. Text that contains blocks of LTR characters will be properly displayed as well, with the beginning of the sentence appearing to the right of the LTR block and the end of the sentence being displayed to the left of the LTR block." +msgstr "" + +#: src/rtl.md:8 +msgid "Directionality is especially important for editing and creating RTL cloze deletions as the cloze format includes both neutral and LTR markup characters. Therefore it is recommended to use a separate note type for LTR cloze deletions and RTL cloze deletions." +msgstr "" + +#: src/rtl.md:10 +msgid "Displaying Fields as RTL during study" +msgstr "" + +#: src/rtl.md:11 +msgid "To display a field as RTL, with proper right-alignment and directionality (punctuation at left of sentences, proper flow around LTR blocks), the field should be wrapped in a div or span element with the RTL directionality specified:" +msgstr "" + +#: src/rtl.md:14 +msgid "\"rtl\"" +msgstr "" + +#: src/anki-desktop.md:3 +msgid "[Via Cloud Sync](#via-cloud-sync)" +msgstr "" + +#: src/anki-desktop.md:4 +msgid "[Sync existing decks into a new AnkiDroid install](#sync-existing-decks-into-a-new-ankidroid-install)" +msgstr "" + +#: src/anki-desktop.md:5 +msgid "[Sync from AnkiDroid to Computer](#sync-from-ankidroid-to-computer)" +msgstr "" + +#: src/anki-desktop.md:7 +msgid "Anki has a free cloud synchronization service called AnkiWeb that makes it easy to keep your card decks in sync between mobile devices and your computer. If you cannot use sync for some reason, it's also possible to use USB, though this method is more laborious." +msgstr "" + +#: src/anki-desktop.md:9 +msgid "Note that AnkiDroid is not affiliated with Anki Desktop or AnkiWeb. AnkiDroid is based on Anki Desktop but it is developed by an entirely separate community of volunteers." +msgstr "" + +#: src/anki-desktop.md:11 +msgid "![AnkiDesktop.png](img/AnkiDesktop.png)" +msgstr "" + +#: src/anki-desktop.md:13 +msgid "Via Cloud Sync" +msgstr "" + +#: src/anki-desktop.md:14 +msgid "Before you can use AnkiWeb, you'll first need to create an account by visiting [https://ankiweb.net](https://ankiweb.net) and clicking the **Sign Up** button. If you have used AnkiWeb in the past, you can skip this step. After signing up, see the corresponding instructions below, depending on whether you are trying to get your existing decks into AnkiDroid or out of AnkiDroid." +msgstr "" + +#: src/anki-desktop.md:16 +msgid "Sync existing decks into a new AnkiDroid install" +msgstr "" + +#: src/anki-desktop.md:17 +msgid "In this scenario you have some existing Anki decks that you want to copy into a new install of AnkiDroid by syncing with AnkiWeb. Open the Anki client with your existing decks (usually this would be Anki desktop, but it could also mean a version of AnkiDroid you have been using on another device), and click the synchronization button (which has two arrows in a circle) at the top right of the deck list." +msgstr "" + +#: src/anki-desktop.md:19 +msgid "If you have never used AnkiWeb before you will need to enter your credentials if prompted, and then press the **Upload to AnkiWeb** button to confirm overwriting the empty collection on AnkiWeb with your existing decks in Anki. Anki will upload all your cards, images and audio to AnkiWeb. If you have a lot of media, this may take some time." +msgstr "" + +#: src/anki-desktop.md:21 +msgid "Once the synchronization has completed, open AnkiDroid in the device that you are trying to copy the existing decks into, and tap the **Sync** button in the app bar at the top of the main [deck list](deck-picker.md). After entering your AnkiWeb credentials, AnkiDroid will download all your cards and media, and remember your login information for next time." +msgstr "" + +#: src/anki-desktop.md:24 +msgid "Note that if you have any existing material in AnkiDroid before attempting to sync, you may be shown a message asking you to choose to either download from AnkiWeb, or upload to AnkiWeb. If you are happy to lose the cards in AnkiDroid then simply choose **Download**. If you need to merge the existing cards with AnkiDroid then you should see the [resolving conflicts](ankiweb-conflicts.md#dealing-with-merge-conflicts-on-ankiweb) section before continuing." +msgstr "" + +#: src/anki-desktop.md:26 +msgid "After the first synchronization has completed, you can click the sync button again any time you wish to synchronize your changes to the cloud. Only changes made since the previous sync will be sent, so subsequent syncs are a lot faster." +msgstr "" + +#: src/anki-desktop.md:28 +msgid "If you add some new cards on the desktop computer and want to sync them to AnkiDroid, you'd repeat the same basic process: sync on desktop (or close the program, as it syncs automatically on close by default), and then tap the sync button on AnkiDroid." +msgstr "" + +#: src/anki-desktop.md:30 +msgid "Sync from AnkiDroid to Computer" +msgstr "" + +#: src/anki-desktop.md:31 +msgid "The process of syncing from AnkiDroid to computer is essentially the same as syncing from computer to AnkiDroid, but in reverse." +msgstr "" + +#: src/anki-desktop.md:33 +msgid "From the [deck list](deck-picker.md), tap the sync button in the top right (it has two arrows in a circle). If it's your first time using AnkiWeb, you may need to enter your login credentials, and then press the \"upload\" button to upload your AnkiDroid collection to AnkiWeb." +msgstr "" + +#: src/anki-desktop.md:35 +msgid "Once the synchronization has completed, open Anki Desktop on your computer and press the sync button there (with two arrows in a circle), and Anki will download your collection." +msgstr "" + +#: src/ankiweb-conflicts.md:2 +msgid "Although it should not happen often, occasionally you may end up in the position where your cards on AnkiDroid can not be automatically merged with the cards on AnkiWeb. In this case it's necessary to choose to either upload to or download from AnkiWeb, which would overwrite any changes on the other side. " +msgstr "" + +#: src/ankiweb-conflicts.md:4 +msgid "If you have new cards on both sides which you want to keep, before syncing you can [export a deck package](exporting.md) for each deck containing new cards from AnkiDroid, then when you do the sync choose **download** to download from AnkiWeb. After the synchronization has completed, you can import the decks you previously exported from AnkiDroid, as per the [importing section](importing/importing-anki-files.md)." +msgstr "" + +#: src/ankiweb-conflicts.md:6 +msgid "Via USB" +msgstr "" + +#: src/ankiweb-conflicts.md:8 +msgid "If you don't have regular internet access, it's still possible to copy decks back and forth to your device, by using USB." +msgstr "" + +#: src/ankiweb-conflicts.md:10 +msgid "The USB method works by importing or exporting all your decks at once. This means that unlike syncing via AnkiWeb, you can't make changes from two locations at once and then merge them. Instead, if you wish to add cards on the desktop, you need to make sure you export the latest version of your collection from your mobile device first, or you'll end up losing any reviews done on the mobile device." +msgstr "" + +#: src/ankiweb-conflicts.md:12 +msgid "Thus the workflow you would typically use is to export your collection from your mobile device and import it into the desktop, make modifications on the desktop, and then export your collection and import it back into your mobile device." +msgstr "" + +#: src/ankiweb-conflicts.md:14 +msgid "AnkiDroid can't directly import text files. If you wish to do that, you'll need to do that with the desktop program, and then import your collection into AnkiDroid." +msgstr "" + +#: src/ankiweb-conflicts.md:16 +msgid "Copy all decks from Anki Desktop to AnkiDroid via USB" +msgstr "" + +#: src/ankiweb-conflicts.md:18 +msgid "On your computer:" +msgstr "" + +#: src/ankiweb-conflicts.md:19 +msgid "Open the desktop program." +msgstr "" + +#: src/ankiweb-conflicts.md:20 +msgid "Choose File>Export from the menu." +msgstr "" + +#: src/ankiweb-conflicts.md:21 +msgid "Click the **Export...** button. Make sure to leave **all decks** selected, as it's not possible to import individual decks into AnkiDroid. **Include scheduling information** must also remain checked." +msgstr "" + +#: src/ankiweb-conflicts.md:22 +msgid "Anki will automatically create a collection.apkg on your desktop. If the file is named something else, please see the previous step again." +msgstr "" + +#: src/ankiweb-conflicts.md:23 +msgid "Connect your Android device to your computer via the USB cable." +msgstr "" + +#: src/ankiweb-conflicts.md:24 +msgid "Open the file explorer on your computer and view the contents of your Android device." +msgstr "" + +#: src/ankiweb-conflicts.md:25 +msgid "Locate the AnkiDroid folder." +msgstr "" + +#: src/ankiweb-conflicts.md:26 +msgid "Drag the collection.apkg file from your desktop into this AnkiDroid folder." +msgstr "" + +#: src/ankiweb-conflicts.md:28 +msgid "Then in AnkiDroid:" +msgstr "" + +#: src/ankiweb-conflicts.md:29 +msgid "From the main decks screen, tap **Import file** from the menu" +msgstr "" + +#: src/ankiweb-conflicts.md:30 +msgid "Tap on **Collection** and then confirm" +msgstr "" + +#: src/ankiweb-conflicts.md:32 +msgid "Once complete, the decks on your device will have been replaced with the decks from your desktop. See the section on [importing apkg files](importing/importing-anki-files.md) for more help with importing." +msgstr "" + +#: src/ankiweb-conflicts.md:35 +msgid "Copy all decks from AnkiDroid to Anki Desktop via USB" +msgstr "" + +#: src/ankiweb-conflicts.md:37 +msgid "The process to copy your decks from AnkiDroid to Anki Desktop is essentially the same as above, but in reverse." +msgstr "" + +#: src/ankiweb-conflicts.md:38 +msgid "Start with your device disconnected from USB" +msgstr "" + +#: src/ankiweb-conflicts.md:39 +msgid "Choose **Export collection** from the main menu in the Deck Screen" +msgstr "" + +#: src/ankiweb-conflicts.md:40 +msgid "Ensure **Include scheduling information** remains checked and press **OK**" +msgstr "" + +#: src/ankiweb-conflicts.md:41 +msgid "Connect device to computer using USB" +msgstr "" + +#: src/ankiweb-conflicts.md:42 +msgid "Copy the **collection.apkg** from the path specified in the message to the desktop on your computer" +msgstr "" + +#: src/ankiweb-conflicts.md:43 +msgid "Double click on the file to import into Anki Desktop" +msgstr "" + +#: src/ankiweb-conflicts.md:45 +msgid "See the [exporting section](exporting.md) below for more detailed information on exporting from AnkiDroid." +msgstr "" + +#: src/advanced-features/intro.md:3 +msgid "[MathJax Support](mathjax.md)" +msgstr "" + +#: src/advanced-features/intro.md:4 +msgid "[Reverse Cards](reverse-cards.md)" +msgstr "" + +#: src/advanced-features/intro.md:5 +msgid "[Custom Fonts](custom-fonts.md)" +msgstr "" + +#: src/advanced-features/intro.md:6 +msgid "[Custom Card Layout](customizing-card-layout.md)" +msgstr "" + +#: src/advanced-features/intro.md:7 +msgid "[Type in the answer feature](type-in-answer.md)" +msgstr "" + +#: src/advanced-features/intro.md:8 +msgid "[Advanced Statistics](advanced-statistics.md)" +msgstr "" + +#: src/advanced-features/intro.md:9 +msgid "[Reminders](reminders.md)" +msgstr "" + +#: src/advanced-features/intro.md:10 +msgid "[Automatic Language Selection](set-language-hint.md)" +msgstr "" + +#: src/advanced-features/mathjax.md:2 +msgid "Mathjax is a modern typesetting library for math and chemistry. AnkiDroid supports Mathjax cards out of the box. Mathjax is configured to expect TeX formatting, with `\\(` and `\\)` delimiting inline equations and `\\[` and `\\]` for display equations." +msgstr "" + +#: src/advanced-features/mathjax.md:4 +msgid "To try it out, enter the following into a field:" +msgstr "" + +#: src/advanced-features/mathjax.md:10 +msgid "and preview the card." +msgstr "" + +#: src/advanced-features/mathjax.md:12 +msgid "For more details, see [Mathjax Support](https://docs.ankiweb.net/math.html#mathjax) in the Anki Manual." +msgstr "" + +#: src/advanced-features/mathjax.md:14 +msgid "[Previous workarounds](https://www.reddit.com/r/Anki/comments/ar7lxd/how_to_load_mathjax_color_extension_on_anki/egm6u5j) are no longer necessary as of AnkiDroid 2.9." +msgstr "" + +#: src/advanced-features/reverse-cards.md:3 +msgid "The Anki system has [built-in note types which allow you to review cards in both directions](https://docs.ankiweb.net/getting-started.html#note-types). When [creating new material](../adding-notes.md) in AnkiDroid, you should choose one of these note types, such as **Basic (and reversed card)**, which will automatically generate a reverse card for you." +msgstr "" + +#: src/advanced-features/reverse-cards.md:6 +msgid "![ReverseNoteType](../img/ReverseNoteType.png)" +msgstr "" + +#: src/advanced-features/reverse-cards.md:8 +msgid "If you used the wrong note type when adding your material, you can change the note type via the [edit note screen](../editing-notes.md), or you can change the note type for multiple cards at once using the browser in Anki Desktop. To do this, follow the instructions in the [syncing with Anki Desktop section](../anki-desktop.md), then in Anki Desktop open the browser, select the cards you want to change, then choose **Change note type** from the menu." +msgstr "" + +#: src/advanced-features/reverse-cards.md:11 +msgid "Alternatively, if your cards are using a custom card layout which doesn't include a reverse card, you can edit the note type to include a reverse card by following the instructions in the [reverse cards section](https://docs.ankiweb.net/templates/generation.html#reverse-cards) of the Anki Desktop user manual. While less convenient than using Anki Desktop, it is possible to edit the note type from directly within AnkiDroid as well; see the [custom card layout section](../advanced-features/customizing-card-layout.md) for more on this." +msgstr "" + +#: src/advanced-features/custom-fonts.md:3 +msgid "AnkiDroid allows you to use non-system fonts on your cards. To set them up properly, it is strongly recommended to use the official method that is used by Anki Desktop. Please see [the corresponding section in the desktop manual](https://docs.ankiweb.net/templates/styling.html#installing-fonts) for more information." +msgstr "" + +#: src/advanced-features/custom-fonts.md:5 +msgid "Alternatively, you can create a new subfolder **fonts** in the main AnkiDroid directory (i.e. the folder which contains the **backups** subfolder, specified under `Settings > Advanced > AnkiDroid directory)`, copy a compatible font file (i.e. .ttf) there, and then set this as the default font under `Settings > Fonts > Default font`. " +msgstr "" + +#: src/advanced-features/custom-fonts.md:7 +msgid "**Note:** this method will change the default font for **all** of your cards, whereas the official method can be more specific. Also, if you sync with AnkiWeb, using this method will lead to cards being displayed differently on different devices." +msgstr "" + +#: src/advanced-features/custom-fonts.md:9 +msgid "Only fonts in the ttf format are officially supported in Anki/AnkiDroid; the [Google Noto](https://fonts.google.com/noto) font set is highly recommended for all languages, and some other free fonts can be found [here](https://github.com/ankidroid/Anki-Android/wiki/Freely-distributable-fonts)." +msgstr "" + +#: src/advanced-features/custom-fonts.md:11 +msgid "Please note that AnkiDroid has to load the entire font into memory in order to use it, and fonts for Asian languages can be quite large. If you have an older device and notice AnkiDroid crashing frequently after installing a font, you may have exceeded your device's memory limits. For Google Noto, it's not recommended to use the combined CJK font, rather get the individual languages [separately from here](https://github.com/googlei18n/noto-cjk)." +msgstr "" + +#: src/advanced-features/custom-fonts.md:13 +msgid "**Note 1**: If you have **Fetch media on sync** disabled, you may need to manually copy the font file from Anki Desktop to your AnkiDroid/collection.media folder." +msgstr "" + +#: src/advanced-features/custom-fonts.md:15 +msgid "**Note 2**: If you can't get your font to work after following the steps in here and the Anki Desktop manual, please refer to the FAQ for " +msgstr "" + +#: src/advanced-features/custom-fonts.md:15 +msgid "detailed steps on how to debug font issues" +msgstr "" + +#: src/advanced-features/customizing-card-layout.md:2 +msgid "The layout of flashcards is completely customizable, although this is an advanced topic with a fairly steep learning curve, and you will probably find it a lot more convenient to do the customization with [Anki Desktop](../anki-desktop.md). " +msgstr "" + +#: src/advanced-features/customizing-card-layout.md:4 +msgid "The [card templates section](https://docs.ankiweb.net/templates/intro.html) of the Anki Desktop manual has detailed instructions on how to edit note types, and most of the actions discussed there are also available from AnkiDroid by tapping **cards** at the bottom of the note editor, or choosing the **manage note types** option in the deck picker. Since detailed information on customizing card layouts is available in the Anki desktop manual, it will not be repeated here." +msgstr "" + +#: src/advanced-features/customizing-card-layout.md:6 +msgid "There is an [advanced formatting page](https://github.com/ankidroid/Anki-Android/wiki/Advanced-formatting) on the AnkiDroid wiki with various hints on how you can get the most out of your card formatting, and we encourage you to read it, and edit it freely if you have any tips that you'd like to share with the community." +msgstr "" + +#: src/advanced-features/type-in-answer.md:3 +msgid "AnkiDroid allows you to type in the correct answer and then compare it to the right answer. You have to set this up with Anki desktop, as described in the [Anki Desktop manual](https://docs.ankiweb.net/templates/fields.html#checking-your-answer)." +msgstr "" + +#: src/advanced-features/type-in-answer.md:5 +msgid "Anki desktop replaces the **{{type:NN}}** field on the front of a card with an input box in the card. On AnkiDroid it is replaced with a **......** prompt instead, and a text input box is shown at the bottom. The comparison between typed text and the correct text is shown on the answer side in place of the **{{type:NN}}** field there, like on Anki desktop." +msgstr "" + +#: src/advanced-features/type-in-answer.md:7 +msgid "The text input box and the soft keyboard can be hidden by ticking **Disable typing in answer** in the preferences." +msgstr "" + +#: src/advanced-features/type-in-answer.md:9 +msgid "Even with typing disabled, the correct answer is shown on the answer side. This is done on purpose; otherwise the correct answer might not be shown at all." +msgstr "" + +#: src/advanced-features/type-in-answer.md:11 +msgid "To hide the comparison (e.g. because the correct answer is shown anyway), the HTML id **typeans** can be used. Add following to the [card styling](https://docs.ankiweb.net/templates/styling.html#card-styling) using Anki Desktop." +msgstr "" + +#: src/advanced-features/type-in-answer.md:19 +msgid "The type answer prompt and the comparison have more classes that can be used to change the way they are displayed. Some of these are the same as on Anki Desktop, some are specific to AnkiDroid." +msgstr "" + +#: src/advanced-features/type-in-answer.md:21 +msgid "The comparison uses three classes, typeGood, typeBad and typeMissed to add green, red and gray background to the typing comparison. These three classes are used on Anki desktop as well." +msgstr "" + +#: src/advanced-features/type-in-answer.md:23 +msgid "The **......** prompt has the class **typePrompt**." +msgstr "" + +#: src/advanced-features/type-in-answer.md:25 +msgid "When typing is set to off in the preferences, the class **typeOff** is added to the prompt on the question side, and to the div element containing the comparison on the answer side. This class can be used to show the type prompt or to hide the typing comparison in this case." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:3 +msgid "If Advanced Statistics are enabled, it changes the **Forecast** graph so that it shows the estimated number of reviews that will be due on a given day in the future taking into account future reviews, learning new cards and failing cards. The bars and the left axis show the number of cards due on each day if you study all cards each day, while the line and the right axis show the number of unseen (shown as **learn**), young and mature cards your deck or collection will consist of if you study all cards each day. The forecast graph does count reviews that are currently overdue. It assumes that the overdue cards will be reviewed according to the **maximum reviews/day** deck option." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:5 +msgid "Advanced Statistics can be enabled in `Settings -> Advanced -> Advanced Statistics` (in plugin section)." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:7 +msgid "The outcome of future reviewing, learning or failing cards affects reviews after that future review. To take this into account, the probability of each outcome is computed from the review log. Then the outcome is randomly chosen, such that an outcome which is more likely according to the review log is more likely to be chosen than an outcome which is less likely according to the review log. The settings all affect how the effect of the outcome of future reviews on subsequent reviews is taken into account." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:9 +msgid "Compute first n days, simulate remainder" +msgstr "" + +#: src/advanced-features/advanced-statistics.md:10 +msgid "If this setting is set to a number greater than 0, instead of randomly choosing an outcome, each possible outcome is taken into account in the simulation, together with its probability. The probability is taken into account for the graph and for future reviews in which it results, which also affect the graph. One review has a couple of possible outcomes (say 4), which all result in a review. That review also has a couple of possible outcomes and so on. If many reviews are simulated this way, many reviews (4 x 4 x 4 x ... ) have to be taken into account which increases the time it takes to compose the graph. Therefore, for reviews later than n days from now are simulated by randomly choosing an outcome." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:14 +msgid "In summary, higher n gives a more accurate graph, but it takes more time to compose the graph." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:16 +msgid "Precision of computation" +msgstr "" + +#: src/advanced-features/advanced-statistics.md:18 +msgid "Reviews which occur with a probability smaller than 100% minus the configured precision of the computation are simulated by randomly choosing an outcome rather than taking into account each possible outcome. This setting is only applicable if the first n days are computed. If Advanced Statistics are disabled, the **Forecast** graph shows the estimated number of reviews that will be due on a given day in the future if you do not review cards, learn no new cards and fail no cards." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:21 +msgid "In summary, higher precision gives a more accurate graph, but it takes more time to compose the graph." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:23 +msgid "Number of iterations of the simulation" +msgstr "" + +#: src/advanced-features/advanced-statistics.md:24 +msgid "Composes the graph several times and then displays the average of these graphs. Each time the graph is composed, another outcome might be randomly chosen. If we average many outcomes which are randomly chosen taking into account the probabilities from the review log, the average outcome will likely be close to the average of the probabilities from the review log. If we average many graphs, the average graph will likely be close to the graph which is generated by taking into account all possible outcomes. If the number of graphs which are averaged is not too high, it will be faster than taking into account all possible outcomes." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:29 +msgid "In summary, a higher number of iterations gives a more accurate graph, but it takes more time to compose the graph." +msgstr "" + +#: src/advanced-features/reminders.md:2 +msgid "AnkiDroid can remind you to devote some time to reviewing cards every day at a specific time via Android's notification framework. You can configure reminders for each options group independently. To configure a notification go to Deck options > Reminders, then tick the checkbox and select the time you want to be notified at. To stop receiving notifications go to Deck options > Reminders and unmark the checkbox." +msgstr "" + +#: src/advanced-features/reminders.md:7 +msgid "Notifications only work for top level decks. Please let us know if you want us to add notifications for subdecks too." +msgstr "" + +#: src/advanced-features/set-language-hint.md:2 +msgid "AnkiDroid has an in Automatic Language Selection feature in the Note Editor starting with AnkiDroid 2.13. This feature allows you to define a default language to be used in your keyboard for a field in a note type." +msgstr "" + +#: src/advanced-features/set-language-hint.md:5 +msgid "For example, if you have Russian and English note fields, and your keyboard supports the setImeHintLocales Android API, the keyboard layout will switch to Russian in the first field and back to English in the second automatically when the fields get focus. [Checkout video reference for demonstration](https://www.youtube.com/watch?v=JrxDjTrRhBE)" +msgstr "" + +#: src/help.md:1 +msgid "Help & Support" +msgstr "" + +#: src/help.md:3 +msgid "Before Asking" +msgstr "" + +#: src/help.md:5 +msgid "Before asking for help, please try searching through the [AnkiDroid Manual](intro.md), the list of [Frequently Asked Questions](https://github.com/ankidroid/Anki-Android/wiki/FAQ), and also the main [Anki Manual](https://docs.ankiweb.net) for general help with the Anki system and features, and any issues not limited to Android." +msgstr "" + +#: src/help.md:7 +msgid "Support" +msgstr "" + +#: src/help.md:8 +msgid "If you were unable to find what you needed in the documentation above, please visit the relevant site below:" +msgstr "" + +#: src/help.md:10 +msgid "Non-Android-Specific Issues" +msgstr "" + +#: src/help.md:11 +msgid "AnkiDroid (the Android version of Anki) is created and managed independently from other Anki versions. For the PC / Web / iOS versions, and general Anki issues that are not limited to Android, please visit the main [Anki support site](https://forums.ankiweb.net)." +msgstr "" + +#: src/help.md:13 +msgid "AnkiDroid Questions" +msgstr "" + +#: src/help.md:14 +msgid "For questions and help concerning AnkiDroid, please visit the [user forum](https://groups.google.com/g/anki-android), or you can send your questions to the forum's [public email address](mailto:public-forum@ankidroid.org) if you don't want to register on the forum." +msgstr "" + +#: src/help.md:16 +msgid "Bug Reports and Feature Requests" +msgstr "" + +#: src/help.md:17 +msgid "For bug reports and feature requests, please search through the current list of open issues on the [AnkiDroid issue tracker](https://github.com/ankidroid/Anki-Android/issues), and if there are no existing issues, create a new issue including as much information as possible. For bug reports, please also include the output of **debug info** by following the steps below: " +msgstr "" + +#: src/help.md:20 +msgid "Open the navigation drawer by tapping the button on the top left of the screen" +msgstr "" + +#: src/help.md:21 +msgid "Tap **settings**" +msgstr "" + +#: src/help.md:22 +msgid "Tap **advanced**" +msgstr "" + +#: src/help.md:23 +msgid "Tap **about AnkiDroid** at the bottom" +msgstr "" + +#: src/help.md:24 +msgid "Tap the **copy debug info** button at the bottom (which copies **debug info** to the clipboard)" +msgstr "" + +#: src/help.md:25 +msgid "If filling out the bug report on your mobile device, paste the contents of the clipboard directly to the issue. Alternatively, you can paste the contents of the clipboard into a new email, send it to yourself, then copy and paste that into the bug report from your computer." +msgstr "" + +#: src/help.md:27 +msgid "![DebugInfo.png](img/DebugInfo.png)" +msgstr "" + +#: src/help.md:29 +msgid "**Note:** if you are unable to open the app at all, so cannot even access **settings** then please follow [these instructions](https://github.com/ankidroid/Anki-Android/wiki/Unopenable-collections)." +msgstr "" + +#: src/help.md:31 +msgid "This **debug info** is important as it allows us to match your report with our internal crash report data. " +msgstr "" + +#: src/help.md:34 +msgid "AnkiDroid is an open source project, and anyone is welcome to contribute (including non-developers)! For help with contributing to AnkiDroid, please first check the [contribution wiki page](https://github.com/ankidroid/Anki-Android/wiki/Contributing), and ask any further questions in the [main forum](https://groups.google.com/g/anki-android)." +msgstr "" + +#: src/beta-testing.md:2 +msgid "If you want to try out the latest features in AnkiDroid, you can sign up for the beta testing program as follows:" +msgstr "" + +#: src/beta-testing.md:4 +msgid "Visit the [Google Play Beta page](https://play.google.com/apps/testing/com.ichi2.anki)" +msgstr "" + +#: src/beta-testing.md:5 +msgid "Click **Become a beta tester**" +msgstr "" + +#: src/beta-testing.md:7 +msgid "After following these steps, the latest beta version will automatically be installed by Google Play in the same way as ordinary updates." +msgstr "" + +#: src/beta-testing.md:9 +msgid "If you are more adventurous, you can also become an alpha tester, by joining the [alpha testers group](https://groups.google.com/g/ankidroidalphatesters) in addition to performing the above steps for beta testing." +msgstr "" + +#: src/beta-testing.md:11 +msgid "Please submit any bugs you find in these development versions to the AnkiDroid issue tracker, as per the [main help page](help.md)." +msgstr "" + +#: src/beta-testing.md:13 +msgid "If you wish to leave the testing program at any time, simply visit the [Google Play Beta page](https://play.google.com/apps/testing/com.ichi2.anki) and click **Leave the test**." +msgstr "" + +#: src/contributing.md:3 +msgid "[Get involved](#get-involved)" +msgstr "" + +#: src/contributing.md:4 +msgid "[Translate](#translate)" +msgstr "" + +#: src/contributing.md:5 +msgid "[Develop](#develop)" +msgstr "" + +#: src/contributing.md:7 +msgid "AnkiDroid is an open source project, and its development relies on contributions from volunteers. Here are some of the ways you can contribute to the AnkiDroid project:" +msgstr "" + +#: src/contributing.md:9 +msgid "Get involved" +msgstr "" + +#: src/contributing.md:10 +msgid "Rate the app, join the [AnkiDroid forum](https://groups.google.com/g/anki-android) and answer questions for other users, submit bug reports, become a [beta tester](beta-testing.md), etc. More detailed information on ways you can contribute as a non-developer can be found on the [Wiki](https://github.com/ankidroid/Anki-Android/wiki/Contributing)." +msgstr "" + +#: src/contributing.md:12 +msgid "Translate" +msgstr "" + +#: src/contributing.md:13 +msgid "Translations of AnkiDroid and this user manual are all contributed by users, and are greatly appreciated. See the " +msgstr "" + +#: src/contributing.md:14 +msgid "translating" +msgstr "" + +#: src/contributing.md:14 +msgid " wiki page for detailed instructions on how to contribute translations." +msgstr "" + +#: src/contributing.md:16 +msgid "Develop" +msgstr "" + +#: src/contributing.md:17 +msgid "The source code for AnkiDroid is available on our main [Github page](https://github.com/ankidroid/Anki-Android), and bug fixes as well as new features are very welcome. Before investing a lot of time on working on a new feature, you may like to ask on the forum first if it's likely to be merged into the main project, as not all features will be accepted. If you are just getting started with Android programming, feel free to ask on the forum for some tips and/or tasks which are suitable for beginners." +msgstr "" + +#: src/changelog/v2.15.md:1 +msgid "Version 2.15.6 (20210714)" +msgstr "" + +#: src/changelog/v2.15.md:2 +msgid "One more crash fix, no crashes shall be left unfixed! If we can help it." +msgstr "" + +#: src/changelog/v2.15.md:4 +msgid "Version 2.15.5 (20210713)" +msgstr "" + +#: src/changelog/v2.15.md:5 +msgid "[🤜🤛 Thank you! Your support makes the fixes happen!](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:6 +msgid "Full-screen navigation drawer drag is a preference, default off" +msgstr "" + +#: src/changelog/v2.15.md:7 +msgid "Floating Action Button ('+') labels are clickable again" +msgstr "" + +#: src/changelog/v2.15.md:8 +msgid "Fixed crash on first run post-install on tablets" +msgstr "" + +#: src/changelog/v2.15.md:9 +msgid "Fixed odd weekly breakdown stats chart behavior" +msgstr "" + +#: src/changelog/v2.15.md:10 +msgid "Fixed crash creating new deck from deck chooser" +msgstr "" + +#: src/changelog/v2.15.md:11 +msgid "[Updated translations](https://crowdin.com/project/ankidroid) (thank you translators!)" +msgstr "" + +#: src/changelog/v2.15.md:12 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/47?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:13 +msgid "We are deep into development for v2.16 + Google Summer of Code, lots of new stuff coming" +msgstr "" + +#: src/changelog/v2.15.md:14 +msgid "Happy reviewing!" +msgstr "" + +#: src/changelog/v2.15.md:16 +msgid "Version 2.15.4 (20210602)" +msgstr "" + +#: src/changelog/v2.15.md:17 +msgid "Saw one crash show up for 2.15.3: if you touched the 3 numbers instead of the deck name on the deck list on phones, it would crash" +msgstr "" + +#: src/changelog/v2.15.md:19 +msgid "Temporarily revert full screen navigation drawer option to fix" +msgstr "" + +#: src/changelog/v2.15.md:21 +msgid "Version 2.15.3 (20210602)" +msgstr "" + +#: src/changelog/v2.15.md:22 +msgid "[❤️ Thank you so much for the donations! We appreciate it ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:23 +msgid "Another batch of fixes stabilizing all the work done for AnkiDroid 2.15" +msgstr "" + +#: src/changelog/v2.15.md:24 +msgid "Fix \"Search All Decks\" in Card Browser not searching" +msgstr "" + +#: src/changelog/v2.15.md:25 +msgid "Make new full screen navigation drawer open optional, default off" +msgstr "" + +#: src/changelog/v2.15.md:26 +msgid "Preserve edited search in card browser if navigation drawer opens" +msgstr "" + +#: src/changelog/v2.15.md:27 +msgid "Fix crash editing Tags dialog when switching back from another app" +msgstr "" + +#: src/changelog/v2.15.md:28 +msgid "Fix incorrect cloze help link" +msgstr "" + +#: src/changelog/v2.15.md:29 +msgid "Increase touchable area of undo icon" +msgstr "" + +#: src/changelog/v2.15.md:30 +msgid "Fix legacy / handebar template parsing" +msgstr "" + +#: src/changelog/v2.15.md:31 +msgid "Fix icon sizes for notifications and search" +msgstr "" + +#: src/changelog/v2.15.md:32 +msgid "Fix audio files incorrectly importing when attached" +msgstr "" + +#: src/changelog/v2.15.md:33 +msgid "Fix deck options \"steps\" showing up with lots of decimal places" +msgstr "" + +#: src/changelog/v2.15.md:34 +msgid "Update translations, add Kannada language" +msgstr "" + +#: src/changelog/v2.15.md:35 +msgid "Fix F-Droid app store publishing" +msgstr "" + +#: src/changelog/v2.15.md:36 +msgid "Correct navigation away from and back to Changelog" +msgstr "" + +#: src/changelog/v2.15.md:37 +msgid "Fix template parsing for \"{{FrontSide}}\"" +msgstr "" + +#: src/changelog/v2.15.md:38 +msgid "Fix stats tab view layout in RTL context" +msgstr "" + +#: src/changelog/v2.15.md:39 +msgid "Fix preview of cloze cards from note editor " +msgstr "" + +#: src/changelog/v2.15.md:40 +msgid "[Full changelog here](https://github.com/ankidroid/Anki-Android/milestone/45?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:43 +msgid "Version 2.15.2 (20210526)" +msgstr "" + +#: src/changelog/v2.15.md:44 +msgid "[❤️ Your donations here give us the time to work on the app, thank you! ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:45 src/changelog/v2.15.md:58 +msgid "🔥 Hot fixes for 2.15.0 issues (See below for 2.15.0 notes 👇 it was a huge release!)" +msgstr "" + +#: src/changelog/v2.15.md:46 +msgid "2.15 should have no regressions now we think 🤞 " +msgstr "" + +#: src/changelog/v2.15.md:47 +msgid "That means we'll slow down the releases and these popups now, sorry + thank you " +msgstr "" + +#: src/changelog/v2.15.md:48 +msgid "Fix another API issue breaking card add from external apps" +msgstr "" + +#: src/changelog/v2.15.md:49 +msgid "Fix conditional template issue that caused blank cards for some" +msgstr "" + +#: src/changelog/v2.15.md:50 +msgid "Fix auto-advance ignoring \"no advance\" setting if card had audio" +msgstr "" + +#: src/changelog/v2.15.md:51 +msgid "Gracefully handle corrupt collections with invalid current decks selected" +msgstr "" + +#: src/changelog/v2.15.md:52 +msgid "Publish to Amazon App Store again (go get AnkiDroid on your Fire devices!)" +msgstr "" + +#: src/changelog/v2.15.md:53 +msgid "[Issue tracker milestone here](https://github.com/ankidroid/Anki-Android/milestone/44?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:56 +msgid "Version 2.15.1 (20210525)" +msgstr "" + +#: src/changelog/v2.15.md:57 +msgid "[❤️ Your donations funded this rapid set of fixes, enjoy! ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:59 +msgid "Do not auto-update users to scheduler v2. Yet." +msgstr "" + +#: src/changelog/v2.15.md:60 +msgid "Fix crash on undo after deck delete" +msgstr "" + +#: src/changelog/v2.15.md:61 +msgid "Try harder to successfully paste images" +msgstr "" + +#: src/changelog/v2.15.md:62 +msgid "Reviewer performance fix - only load mathjax if needed" +msgstr "" + +#: src/changelog/v2.15.md:63 +msgid "Fixed compatibility issue for 2.15 collections on 2.14" +msgstr "" + +#: src/changelog/v2.15.md:64 +msgid "Fixed API issue breaking card add from external apps" +msgstr "" + +#: src/changelog/v2.15.md:65 +msgid "Fresh language translations. See a bad translation? [You can fix it easily!](https://crowdin.com/project/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:66 +msgid "[Detailed issue log](https://github.com/ankidroid/Anki-Android/milestone/43?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:68 +msgid "Version 2.15.0 (20210524)" +msgstr "" + +#: src/changelog/v2.15.md:69 +msgid "[❤️ Your donations funded these features, enjoy! ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:70 +msgid "Thanks to [Google Summer of Code](https://github.com/ankidroid/Anki-Android/wiki/Google-Summer-of-Code-2021) students for a HUGE effort!" +msgstr "" + +#: src/changelog/v2.15.md:71 +msgid "Way too many changes to describe, but here are the highlights:" +msgstr "" + +#: src/changelog/v2.15.md:72 +msgid "New timezone code supported for sync with AnkiDesktop!" +msgstr "" + +#: src/changelog/v2.15.md:73 +msgid "Performance, stability improvements everywhere" +msgstr "" + +#: src/changelog/v2.15.md:74 +msgid "General UI improvements (accessibility, dark mode, design, more)" +msgstr "" + +#: src/changelog/v2.15.md:75 +msgid "Many new keyboard shortcuts and gesture actions" +msgstr "" + +#: src/changelog/v2.15.md:76 +msgid "Languages: Added Odia, Malayalam; big RTL support improvements!" +msgstr "" + +#: src/changelog/v2.15.md:77 +msgid "Reviewer: Javascript API: many new methods" +msgstr "" + +#: src/changelog/v2.15.md:78 +msgid "Improved account login, sync conflict, card template UI" +msgstr "" + +#: src/changelog/v2.15.md:79 +msgid "Tags and Decks dialogs have search!" +msgstr "" + +#: src/changelog/v2.15.md:80 +msgid "Whiteboard: erase, pen colors, stroke width" +msgstr "" + +#: src/changelog/v2.15.md:81 +msgid "NoteEditor: Mathjax 3, capitalize sentences setting" +msgstr "" + +#: src/changelog/v2.15.md:82 +msgid "Huge quality improvements all over codebase, helps future developers" +msgstr "" + +#: src/changelog/v2.15.md:83 +msgid "[🚧 Full 638 item changelog here! 🚧](https://github.com/ankidroid/Anki-Android/milestone/37?closed=1)" +msgstr "" + +#: src/changelog/v2.14.md:1 +msgid "Version 2.14.6 (20210309)" +msgstr "" + +#: src/changelog/v2.14.md:2 +msgid "Reviewer: fix \"my card is blank now with 2.14.5! help!\" 😱" +msgstr "" + +#: src/changelog/v2.14.md:3 +msgid "Reviewer: fix Android 8/8.1 review buttons disappear (finally?)" +msgstr "" + +#: src/changelog/v2.14.md:5 +msgid "Version 2.14.5 (20210307)" +msgstr "" + +#: src/changelog/v2.14.md:6 +msgid "We really appreciate the [donations](https://opencollective.com/ankidroid), they paid for these fixes 🤝" +msgstr "" + +#: src/changelog/v2.14.md:7 +msgid "NoteEditor: Android 11 users can crop!" +msgstr "" + +#: src/changelog/v2.14.md:8 +msgid "NoteEditor: Canceling crop twice won't delete your image" +msgstr "" + +#: src/changelog/v2.14.md:9 +msgid "DeckList: parent limits altered to match Desktop" +msgstr "" + +#: src/changelog/v2.14.md:10 +msgid "DeckList: current deck saved as correct type" +msgstr "" + +#: src/changelog/v2.14.md:11 +msgid "SchedulerV2: allow very small delays" +msgstr "" + +#: src/changelog/v2.14.md:12 +msgid "KNOWN ISSUE: [Android 8/8.1 answer buttons disappear](https://github.com/ankidroid/Anki-Android/issues/7369). Use gestures as workaround." +msgstr "" + +#: src/changelog/v2.14.md:13 +msgid "Anyone with Android 8/8.1 that reproduces this and knows how to develop Android layouts? We'd love the help!" +msgstr "" + +#: src/changelog/v2.14.md:15 +msgid "Version 2.14.4 (20210307)" +msgstr "" + +#: src/changelog/v2.14.md:16 +msgid "Re-released immediately as 2.14.5 after release script issue 🤷😅" +msgstr "" + +#: src/changelog/v2.14.md:18 +msgid "Version 2.14.3 (20210109)" +msgstr "" + +#: src/changelog/v2.14.md:19 +msgid "[The AnKing](https://www.youtube.com/c/TheAnKing) has graced us with a [new intro video](https://youtu.be/iuBU_OM9oAM)! 🤓" +msgstr "" + +#: src/changelog/v2.14.md:20 +msgid "Still happily overwhelmed by the [donations](https://opencollective.com/ankidroid) 💪" +msgstr "" + +#: src/changelog/v2.14.md:21 +msgid "Reviewer: Fix mark note keyboard shortcut" +msgstr "" + +#: src/changelog/v2.14.md:22 +msgid "NoteEditor: Fix to remove padding if removing formatting toolbar" +msgstr "" + +#: src/changelog/v2.14.md:23 +msgid "Previewer: Fix to show same card after edit" +msgstr "" + +#: src/changelog/v2.14.md:24 +msgid "Scheduler: Fix v1 scheduler completes deck when only learn cards due" +msgstr "" + +#: src/changelog/v2.14.md:26 +msgid "Version 2.14.2 (20201202)" +msgstr "" + +#: src/changelog/v2.14.md:27 +msgid "Wow! We are humbled by the [donations](https://opencollective.com/ankidroid) 🤯" +msgstr "" + +#: src/changelog/v2.14.md:28 +msgid "The resources are already going to contributors to improve the app! Thank you ❤️ " +msgstr "" + +#: src/changelog/v2.14.md:29 +msgid "Note Editor: Fix image crop not working first time" +msgstr "" + +#: src/changelog/v2.14.md:30 +msgid "Note Editor: Paste image at cursor not end" +msgstr "" + +#: src/changelog/v2.14.md:31 +msgid "Note Editor: Fix Ctrl+C opens preview" +msgstr "" + +#: src/changelog/v2.14.md:32 +msgid "Note Editor: Add menubar toggle to disable editing toolbar" +msgstr "" + +#: src/changelog/v2.14.md:33 +msgid "Home Screen: Fix Vivo device shortcut creation (again)" +msgstr "" + +#: src/changelog/v2.14.md:34 +msgid "Reviewer: Fix numeric keypad not working" +msgstr "" + +#: src/changelog/v2.14.md:35 +msgid "Note Editor: Fix cloze cards going to wrong deck" +msgstr "" + +#: src/changelog/v2.14.md:36 +msgid "Navigation Menu: Fix safe display app hang" +msgstr "" + +#: src/changelog/v2.14.md:37 +msgid "Preferences: Fix gestures menu translation / ordering issue" +msgstr "" + +#: src/changelog/v2.14.md:38 +msgid "Translations: thanks [translators!](https://crowdin.com/project/ankidroid/activity_stream) - you can help too!" +msgstr "" + +#: src/changelog/v2.14.md:39 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/39?closed=1)" +msgstr "" + +#: src/changelog/v2.14.md:41 +msgid "Version 2.14.1 (2020-11-23)" +msgstr "" + +#: src/changelog/v2.14.md:42 +msgid "Always free, always open source, but you may [donate if you like 😊](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.14.md:43 +msgid "Move sync button to right of action bar (vs search)" +msgstr "" + +#: src/changelog/v2.14.md:44 +msgid "Fix duplicate note detection" +msgstr "" + +#: src/changelog/v2.14.md:45 +msgid "Fix add deck shortcut on Vivo devices" +msgstr "" + +#: src/changelog/v2.14.md:46 +msgid "Fix non-translatable 'Card Info' strings" +msgstr "" + +#: src/changelog/v2.14.md:47 +msgid "Fix suspended card handling in filtered decks" +msgstr "" + +#: src/changelog/v2.14.md:48 +msgid "Sync translations from volunteers on our crowdin.com site (thank you!)" +msgstr "" + +#: src/changelog/v2.14.md:49 +msgid "Fix crash on mismatched WebView ABIs" +msgstr "" + +#: src/changelog/v2.14.md:50 +msgid "Fix crash invalid filename handling while pasting image" +msgstr "" + +#: src/changelog/v2.14.md:51 +msgid "Fix crash selecting cards in card browser" +msgstr "" + +#: src/changelog/v2.14.md:52 +msgid "Fix crash Android 8 in card browser" +msgstr "" + +#: src/changelog/v2.14.md:53 +msgid "Fix crash in undo labeling" +msgstr "" + +#: src/changelog/v2.14.md:54 +msgid "Fix crash reset password when system browser not exported" +msgstr "" + +#: src/changelog/v2.14.md:55 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/38?closed=1)" +msgstr "" + +#: src/changelog/v2.14.md:57 +msgid "Version 2.14.0 (2020-11-18)" +msgstr "" + +#: src/changelog/v2.14.md:58 +msgid "Enabled Donations - we ❤️ you, [now you can ❤️ us 😊](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.14.md:59 +msgid "New Screen: Card Info (from Card Browser or as a Reviewer App Bar Button)" +msgstr "" + +#: src/changelog/v2.14.md:60 +msgid "New Screen: Help - easy access to manual, many community pages/manuals, donation page, translations" +msgstr "" + +#: src/changelog/v2.14.md:61 +msgid "Home screen: Add deck shortcut" +msgstr "" + +#: src/changelog/v2.14.md:62 +msgid "Deck Options: SchedV2: Support setting \"Hard Factor\" " +msgstr "" + +#: src/changelog/v2.14.md:63 +msgid "Card Browser: Add deck filtering" +msgstr "" + +#: src/changelog/v2.14.md:64 +msgid "Card Browser: Filter By Flag" +msgstr "" + +#: src/changelog/v2.14.md:65 +msgid "Card Browser: Adding cards defaults to selected deck" +msgstr "" + +#: src/changelog/v2.14.md:66 +msgid "Card Browser: Many more keyboard shortcuts" +msgstr "" + +#: src/changelog/v2.14.md:67 +msgid "Card Browser: Display the number of cards deleted when deleting a note" +msgstr "" + +#: src/changelog/v2.14.md:68 +msgid "Card Browser: Better handling of deck searches containing wildcards" +msgstr "" + +#: src/changelog/v2.14.md:69 +msgid "Reviewer: Basic Android TV Support" +msgstr "" + +#: src/changelog/v2.14.md:70 +msgid "Reviewer: New Gesture: Abort Learning & Sync" +msgstr "" + +#: src/changelog/v2.14.md:71 +msgid "Reviewer: Support AnkiMobile 9-area gesture touch layout" +msgstr "" + +#: src/changelog/v2.14.md:72 +msgid "Reviewer: Improve \"Empty Card\" UX" +msgstr "" + +#: src/changelog/v2.14.md:73 +msgid "Reviewer: Keyboard shortcuts for flags (Ctrl+1...4)" +msgstr "" + +#: src/changelog/v2.14.md:74 +msgid "Note Editor: Editor Toolbar (& keyboard shortcuts) - hugely requested feature!" +msgstr "" + +#: src/changelog/v2.14.md:75 +msgid "Note Editor Toolbar: Apply Custom Commands (& keyboard shortcuts)" +msgstr "" + +#: src/changelog/v2.14.md:76 +msgid "Note Editor: Paste to Insert Image" +msgstr "" + +#: src/changelog/v2.14.md:77 +msgid "Note Editor: Made fields full-width" +msgstr "" + +#: src/changelog/v2.14.md:78 +msgid "Note Editor: Change Font Size for fields" +msgstr "" + +#: src/changelog/v2.14.md:79 +msgid "Note Editor: Expand/Collapse Fields" +msgstr "" + +#: src/changelog/v2.14.md:80 +msgid "Note Editor: Clear Field button" +msgstr "" + +#: src/changelog/v2.14.md:81 +msgid "Note Editor: Ctrl+Shift+Num to switch fields" +msgstr "" + +#: src/changelog/v2.14.md:82 +msgid "Note Editor: Improved image addition / naming" +msgstr "" + +#: src/changelog/v2.14.md:83 +msgid "Note Editor: Add preference to convert newline to HTML (or not)" +msgstr "" + +#: src/changelog/v2.14.md:84 +msgid "OS Integration: Default to \"Anki Card\" in system context menu vs \"Card Browser\"" +msgstr "" + +#: src/changelog/v2.14.md:85 +msgid "Libanki: Add FileUpload API" +msgstr "" + +#: src/changelog/v2.14.md:86 +msgid "Translations: Tagged screenshots on crowdin.com to help our translators" +msgstr "" + +#: src/changelog/v2.14.md:87 +msgid "Stability: Fix rare crashes (down to ~50/day total w/1.8million installs!)" +msgstr "" + +#: src/changelog/v2.14.md:88 +msgid "Performance: massive number of speedups" +msgstr "" + +#: src/changelog/v2.14.md:89 +msgid "Dev: Massively sped up AnkiDroid builds and improved code readability" +msgstr "" + +#: src/changelog/v2.14.md:90 +msgid "Totals: 345 code changes and hundreds of translations, made by volunteers, in 2 months" +msgstr "" + +#: src/changelog/v2.14.md:91 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/30?closed=1)" +msgstr "" + +#: src/changelog/v2.13.md:1 +msgid "Version 2.13.5 (2020-10-03)" +msgstr "" + +#: src/changelog/v2.13.md:2 +msgid "Fix performance for fast (\\<1s) answers in review" +msgstr "" + +#: src/changelog/v2.13.md:3 +msgid "Add links to new Arabic help/manual translation" +msgstr "" + +#: src/changelog/v2.13.md:4 +msgid "Add back button handling to changelog display" +msgstr "" + +#: src/changelog/v2.13.md:5 +msgid "Add rate button to changelog" +msgstr "" + +#: src/changelog/v2.13.md:6 +msgid "Add warning message to handle future db upgrades" +msgstr "" + +#: src/changelog/v2.13.md:7 +msgid "Sync all translations from our volunteer translators (thanks everyone!)" +msgstr "" + +#: src/changelog/v2.13.md:9 +msgid "Version 2.13.4 (2020-09-29)" +msgstr "" + +#: src/changelog/v2.13.md:10 +msgid "Fix crash showing TagsDialog" +msgstr "" + +#: src/changelog/v2.13.md:11 +msgid "Fix crash in gesture detection" +msgstr "" + +#: src/changelog/v2.13.md:12 +msgid "Improve import interrupted error message" +msgstr "" + +#: src/changelog/v2.13.md:13 +msgid "Fix scheduler counts after undo" +msgstr "" + +#: src/changelog/v2.13.md:14 +msgid "Fix Card Browser preview after sort" +msgstr "" + +#: src/changelog/v2.13.md:15 +msgid "Fix button display if answer animation incomplete" +msgstr "" + +#: src/changelog/v2.13.md:16 +msgid "Sync all translations" +msgstr "" + +#: src/changelog/v2.13.md:18 +msgid "Version 2.13.3 (2020-09-23)" +msgstr "" + +#: src/changelog/v2.13.md:19 +msgid "Fix double-clicking answer buttons skipping cards" +msgstr "" + +#: src/changelog/v2.13.md:20 +msgid "Change missing media warning to twice-per-session not twice-per-deck" +msgstr "" + +#: src/changelog/v2.13.md:21 +msgid "Change answer button fade on open" +msgstr "" + +#: src/changelog/v2.13.md:22 +msgid "Updated all translations from volunteer crowdin.com site up to 20200923" +msgstr "" + +#: src/changelog/v2.13.md:24 +msgid "Version 2.13.2 (2020-09-19)" +msgstr "" + +#: src/changelog/v2.13.md:25 +msgid "Fix Crash rare on Card Browser exit" +msgstr "" + +#: src/changelog/v2.13.md:26 +msgid "Fix Crash Android 4.4" +msgstr "" + +#: src/changelog/v2.13.md:27 +msgid "Fix Open Deck failures / improve related messaging" +msgstr "" + +#: src/changelog/v2.13.md:28 +msgid "Fix messaging for Xioami cloze workaround" +msgstr "" + +#: src/changelog/v2.13.md:29 +msgid "Move \"set field language\" after share on Note Editor context menu" +msgstr "" + +#: src/changelog/v2.13.md:31 +msgid "Version 2.13.1 (2020-09-17)" +msgstr "" + +#: src/changelog/v2.13.md:32 +msgid "Add cloze via clipboard paste workaround on MIUI/Xiaomi devices" +msgstr "" + +#: src/changelog/v2.13.md:33 +msgid "Fix Navigation drawer respects safe display / disable animations preference" +msgstr "" + +#: src/changelog/v2.13.md:34 +msgid "Fix Reviewer buttons respect safe display / disable animations preference" +msgstr "" + +#: src/changelog/v2.13.md:35 +msgid "Fix Deck Picker bottom bar opacity" +msgstr "" + +#: src/changelog/v2.13.md:36 +msgid "Fix Error message about missing content on cards" +msgstr "" + +#: src/changelog/v2.13.md:37 +msgid "Fix crash selecting deck that disappears during sync" +msgstr "" + +#: src/changelog/v2.13.md:39 +msgid "Version 2.13.0 (2020-09-15)" +msgstr "" + +#: src/changelog/v2.13.md:40 +msgid "Field tag (such as \"{{Front}}\") appearing in a note's field will be shown as-is in cards." +msgstr "" + +#: src/changelog/v2.13.md:41 +msgid "Add Sync icon badge when changes are pending sync (can be disabled in options)" +msgstr "" + +#: src/changelog/v2.13.md:42 +msgid "Add Edit Note from card Preview while in Card Browser" +msgstr "" + +#: src/changelog/v2.13.md:43 +msgid "Add \"Anki Card\" to system context menu (like \"Card Browser\") - disabled by default" +msgstr "" + +#: src/changelog/v2.13.md:44 +msgid "Add Set keyboard language for specific fields in the note editor (example: one field Japanese, other field Portuguese for input)." +msgstr "" + +#: src/changelog/v2.13.md:45 +msgid "Add Keep keyboard open after adding a note" +msgstr "" + +#: src/changelog/v2.13.md:46 +msgid "Add Card properties available in JavaScript API" +msgstr "" + +#: src/changelog/v2.13.md:47 +msgid "Add JavaScript API versioning for scripts (basis for future plugins)" +msgstr "" + +#: src/changelog/v2.13.md:48 +msgid "Add Auto-Login when selecting saved user account" +msgstr "" + +#: src/changelog/v2.13.md:49 +msgid "Add Allow import of collection.anki21 files when under SchedV1" +msgstr "" + +#: src/changelog/v2.13.md:50 +msgid "Add New screen for first-time users" +msgstr "" + +#: src/changelog/v2.13.md:51 +msgid "Add Button animations when answering cards" +msgstr "" + +#: src/changelog/v2.13.md:52 +msgid "Add Note Editor: Add shortcuts Ctrl+(Alt)+Shift+C to add a cloze." +msgstr "" + +#: src/changelog/v2.13.md:53 +msgid "Fix Some cards in learning were not shown at the right time (Only if you undo/bury/suspend/reset/reschedule and the next card goes to learning mode)" +msgstr "" + +#: src/changelog/v2.13.md:54 +msgid "Fix Selected deck has translucent background if a deck picker background is set" +msgstr "" + +#: src/changelog/v2.13.md:55 +msgid "Fix Improved preview screens" +msgstr "" + +#: src/changelog/v2.13.md:56 +msgid "Fix Better accessibility in Deck Browser for partially sighted users" +msgstr "" + +#: src/changelog/v2.13.md:57 +msgid "Fix Improve visibility of \"Add/Remove Option Group\"" +msgstr "" + +#: src/changelog/v2.13.md:58 +msgid "Fix Improved messages for sync rate limiting error" +msgstr "" + +#: src/changelog/v2.13.md:59 +msgid "Fix Improved messages for reducing study limits" +msgstr "" + +#: src/changelog/v2.13.md:60 +msgid "Fix Improved messaging when collection is missing media" +msgstr "" + +#: src/changelog/v2.13.md:61 +msgid "Fix Improve feedback when accessing Debug Info" +msgstr "" + +#: src/changelog/v2.13.md:62 +msgid "Fix Add additional warnings to reschedule dialog" +msgstr "" + +#: src/changelog/v2.13.md:63 +msgid "Fix Whiteboard pen color can be disabled by pressing icon again" +msgstr "" + +#: src/changelog/v2.13.md:64 +msgid "Fix Ensure all menu items in the reviewer can be customized by \"App Bar Buttons\" setting" +msgstr "" + +#: src/changelog/v2.13.md:65 +msgid "Fix Scheduler discrepancy handling early interval on filtered decks" +msgstr "" + +#: src/changelog/v2.13.md:66 +msgid "Fix Exports work when cards are missing media" +msgstr "" + +#: src/changelog/v2.13.md:67 +msgid "Fix Crash due to logging." +msgstr "" + +#: src/changelog/v2.13.md:68 +msgid "Fix Toasts used to show one more card than the number of card actually reviewed during the time box" +msgstr "" + +#: src/changelog/v2.13.md:69 +msgid "Fix Handle newlines properly in Note Editor Preview" +msgstr "" + +#: src/changelog/v2.13.md:70 +msgid "Fix Improve AnkiDroid opening animation" +msgstr "" + +#: src/changelog/v2.13.md:71 +msgid "Fix Show correct answer button when answering via Keyboard" +msgstr "" + +#: src/changelog/v2.13.md:72 +msgid "Fix \"New Cards Added\" Statistic" +msgstr "" + +#: src/changelog/v2.13.md:73 +msgid "Fix Crash when inserting a cloze when selecting text from right-to-left via keyboard" +msgstr "" + +#: src/changelog/v2.13.md:74 +msgid "Fix \"Show Password\" icon revealing saved password" +msgstr "" + +#: src/changelog/v2.13.md:75 +msgid "Fix Card browser still contains card after the app goes into background" +msgstr "" + +#: src/changelog/v2.13.md:76 +msgid "Fix Daily unbury occurs during sync if necessary" +msgstr "" + +#: src/changelog/v2.13.md:77 +msgid "Fix On big screen, buttons moved during loading" +msgstr "" + +#: src/changelog/v2.13.md:78 +msgid "Translators If some text change because of minor changes (typos) you won't have to translate it again" +msgstr "" + +#: src/changelog/v2.13.md:79 +msgid "Performance improvements (specifically: initial loading of large collection (lot of decks, note type, card type, fields, long templates...), card browser, deck picker startup, next card view, undo, cancelling tasks such as computing a list of card in browser)" +msgstr "" + +#: src/changelog/v2.13.md:80 +msgid "Dev: Massive dev workflow improvements and automated checks for our translations." +msgstr "" + +#: src/changelog/v2.13.md:81 +msgid "Dev: Implement backend for CSV Importer" +msgstr "" + +#: src/changelog/v2.13.md:82 +msgid "Dev: Improve crash reporting on app startup" +msgstr "" + +#: src/changelog/v2.13.md:83 +msgid "Dev: Massive improvement in testing, especially around scheduler / card queue behavior" +msgstr "" + +#: src/changelog/v2.13.md:84 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/27?closed=1)" +msgstr "" + +#: src/changelog/v2.12.md:1 +msgid "Version 2.12.1 (2020-07-21)" +msgstr "" + +#: src/changelog/v2.12.md:2 +msgid "Fix bug previewing edited notes after changing field count" +msgstr "" + +#: src/changelog/v2.12.md:3 +msgid "Fix crash previewing edited notes from dynamic decks" +msgstr "" + +#: src/changelog/v2.12.md:4 +msgid "Fix crash restarting app after a crash" +msgstr "" + +#: src/changelog/v2.12.md:5 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/28?closed=1)" +msgstr "" + +#: src/changelog/v2.12.md:7 +msgid "Version 2.12.0 (2020-07-18)" +msgstr "" + +#: src/changelog/v2.12.md:8 +msgid "Add Crop image feature" +msgstr "" + +#: src/changelog/v2.12.md:9 +msgid "Add Preview in note editor" +msgstr "" + +#: src/changelog/v2.12.md:10 +msgid "Add edit tags in reviewer" +msgstr "" + +#: src/changelog/v2.12.md:11 +msgid "Add volume buttons as gestures" +msgstr "" + +#: src/changelog/v2.12.md:12 +msgid "Add whiteboard pen color" +msgstr "" + +#: src/changelog/v2.12.md:13 +msgid "Add microphone tool bar in reviewer" +msgstr "" + +#: src/changelog/v2.12.md:14 +msgid "Add javascript API (check the Wiki!)" +msgstr "" + +#: src/changelog/v2.12.md:15 +msgid "Improve: app is 3MB smaller" +msgstr "" + +#: src/changelog/v2.12.md:16 +msgid "Fix: show whole tag in tags dialog" +msgstr "" + +#: src/changelog/v2.12.md:17 +msgid "Fix copy note copies tags too" +msgstr "" + +#: src/changelog/v2.12.md:18 +msgid "Fix data corruption canceling template edits" +msgstr "" + +#: src/changelog/v2.12.md:19 +msgid "performance and bug fixes everywhere!" +msgstr "" + +#: src/changelog/v2.12.md:21 +msgid "11 volunteers made hundreds of individual changes this release" +msgstr "" + +#: src/changelog/v2.12.md:23 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/18?closed=1)" +msgstr "" + +#: src/changelog/v2.11.md:1 +msgid "Version 2.11.3 (2020-06-17)" +msgstr "" + +#: src/changelog/v2.11.md:2 +msgid "Fix out-of-memory errors when importing very large decks" +msgstr "" + +#: src/changelog/v2.11.md:3 +msgid "Fix incorrect out-of-space message on import in Android 4" +msgstr "" + +#: src/changelog/v2.11.md:4 +msgid "Fix crash if card viewer closed quickly after view" +msgstr "" + +#: src/changelog/v2.11.md:5 +msgid "Fix unzip fail on .apkg files >2GB" +msgstr "" + +#: src/changelog/v2.11.md:6 +msgid "Fix crash on edit note in browser multi-select" +msgstr "" + +#: src/changelog/v2.11.md:8 +msgid "Version 2.11.2 (2020-06-10)" +msgstr "" + +#: src/changelog/v2.11.md:9 +msgid "Add santali language" +msgstr "" + +#: src/changelog/v2.11.md:10 +msgid "Fix Hebrew, Indonesian, Tagalog languages" +msgstr "" + +#: src/changelog/v2.11.md:11 +msgid "Improve error reporting around apkg import failures" +msgstr "" + +#: src/changelog/v2.11.md:12 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/24?closed=1)" +msgstr "" + +#: src/changelog/v2.11.md:14 +msgid "Version 2.11.1 (2020-06-08)" +msgstr "" + +#: src/changelog/v2.11.md:15 +msgid "Fix crash in Card Browser multi-select mode" +msgstr "" + +#: src/changelog/v2.11.md:16 +msgid "Fix Custom Steps interval dialog space entry issue" +msgstr "" + +#: src/changelog/v2.11.md:17 +msgid "Fix flags don't export with deck" +msgstr "" + +#: src/changelog/v2.11.md:18 +msgid "Fix AnkiDroid API doesn't handle null model id (Anki Compatibility workaround)" +msgstr "" + +#: src/changelog/v2.11.md:19 +msgid "Fix translation crash in sync dialog in Azerbaijani" +msgstr "" + +#: src/changelog/v2.11.md:20 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/23?closed=1)" +msgstr "" + +#: src/changelog/v2.11.md:22 +msgid "Version 2.11.0 (2020-06-05)" +msgstr "" + +#: src/changelog/v2.11.md:23 +msgid "Android minimum supported version is now 4.1 / Jelly Bean / API16 (AnkiWeb Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:24 +msgid "Change sibling burying should default to off (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:25 +msgid "Change learn cards do not go in filtered decks in v1 sched (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:26 +msgid "Add Browser Appearance screen, to edit Card Browser render format (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:27 +msgid "Add guidance in Note Editor if no cards will be generated despite full fields" +msgstr "" + +#: src/changelog/v2.11.md:28 +msgid "Add all translations from our crowdin.com translation site" +msgstr "" + +#: src/changelog/v2.11.md:29 +msgid "Add ability to decrease daily limit in custom study (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:30 +msgid "Add ability to block gesture handling when tapping hints in Reviewer" +msgstr "" + +#: src/changelog/v2.11.md:31 +msgid "Add create subdeck option in deck list long-press context menu" +msgstr "" + +#: src/changelog/v2.11.md:32 +msgid "Add edit note action in Card Browser multi-select mode" +msgstr "" + +#: src/changelog/v2.11.md:33 +msgid "Add ability to turn off 'Card Browser' system text context menu item" +msgstr "" + +#: src/changelog/v2.11.md:34 +msgid "Add nightMode CSS selector for card HTML (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:35 +msgid "Add ability to change just the case of a deck name" +msgstr "" + +#: src/changelog/v2.11.md:36 +msgid "Add page-up/page-down gestures" +msgstr "" + +#: src/changelog/v2.11.md:37 +msgid "Improve gesture handling in full-screen / immersive mode" +msgstr "" + +#: src/changelog/v2.11.md:38 +msgid "Improve handling of cloze deletion in TTS mode" +msgstr "" + +#: src/changelog/v2.11.md:39 +msgid "Improve Card Browser search from Android text selection menu" +msgstr "" + +#: src/changelog/v2.11.md:40 +msgid "Improve Card Browser with default hide of media filenames" +msgstr "" + +#: src/changelog/v2.11.md:41 +msgid "Improve Reviewer auto-advance by waiting for TTS to finish" +msgstr "" + +#: src/changelog/v2.11.md:42 +msgid "Improve transparent SVG display in night mode with white background" +msgstr "" + +#: src/changelog/v2.11.md:43 +msgid "Improve anki package import handling" +msgstr "" + +#: src/changelog/v2.11.md:44 +msgid "Improve AnkiWeb login form enter button handling" +msgstr "" + +#: src/changelog/v2.11.md:45 +msgid "Improve hardware back button handling in restore from backup" +msgstr "" + +#: src/changelog/v2.11.md:46 +msgid "Improve Reviewer display of un-rendered LaTeX" +msgstr "" + +#: src/changelog/v2.11.md:47 +msgid "Improve TTS / auto-answer combination, wait for TTS before advance" +msgstr "" + +#: src/changelog/v2.11.md:48 +msgid "Workaround Firefox open downloaded deck bug" +msgstr "" + +#: src/changelog/v2.11.md:49 +msgid "Workaround crash on Samsung devices with >500 deck reminders" +msgstr "" + +#: src/changelog/v2.11.md:50 +msgid "Fix card template editor mistakenly allowing add template on cloze type" +msgstr "" + +#: src/changelog/v2.11.md:51 +msgid "Fix language change preference" +msgstr "" + +#: src/changelog/v2.11.md:52 +msgid "Fix ability to unbury a deck in deck list" +msgstr "" + +#: src/changelog/v2.11.md:53 +msgid "Fix app bar item flicker during review" +msgstr "" + +#: src/changelog/v2.11.md:54 +msgid "Fix V2 scheduler learning card count after undo" +msgstr "" + +#: src/changelog/v2.11.md:55 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/13?closed=1)" +msgstr "" + +#: src/changelog/v2.10.md:1 +msgid "Version 2.10.4 (2020-05-31)" +msgstr "" + +#: src/changelog/v2.10.md:2 +msgid "Workaround expired AnkiWeb SSL Root certificate" +msgstr "" + +#: src/changelog/v2.10.md:3 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/22?closed=1)" +msgstr "" + +#: src/changelog/v2.10.md:5 +msgid "Version 2.10.3 (2020-05-29)" +msgstr "" + +#: src/changelog/v2.10.md:6 +msgid "Fix crash on no permissions on Card Browser system text menu entry" +msgstr "" + +#: src/changelog/v2.10.md:7 +msgid "Fix crash in widget if external storage unmounts" +msgstr "" + +#: src/changelog/v2.10.md:8 +msgid "Fix crash on device reboot if no permissions" +msgstr "" + +#: src/changelog/v2.10.md:9 +msgid "Fix crash if deck picker background image too large" +msgstr "" + +#: src/changelog/v2.10.md:10 +msgid "Fix crash in tags dialog" +msgstr "" + +#: src/changelog/v2.10.md:11 +msgid "Fix bad data generated for null objects (Anki compatibility)" +msgstr "" + +#: src/changelog/v2.10.md:12 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/21?closed=1)" +msgstr "" + +#: src/changelog/v2.10.md:14 +msgid "Version 2.10.2 (2020-05-14)" +msgstr "" + +#: src/changelog/v2.10.md:15 +msgid "Fix type answer cards not rendering correctly" +msgstr "" + +#: src/changelog/v2.10.md:16 +msgid "Fix type answer card template creation on non-English new installs" +msgstr "" + +#: src/changelog/v2.10.md:17 +msgid "Fix frequent full sync caused by incorrect learning card counts" +msgstr "" + +#: src/changelog/v2.10.md:18 +msgid "Fix crash importing into fresh install with no storage permission" +msgstr "" + +#: src/changelog/v2.10.md:20 +msgid "Version 2.10.1 (2020-05-13)" +msgstr "" + +#: src/changelog/v2.10.md:21 +msgid "Updated all translations from crowdin translators" +msgstr "" + +#: src/changelog/v2.10.md:22 +msgid "Fix crash note editor on rapid back button" +msgstr "" + +#: src/changelog/v2.10.md:23 +msgid "Fix crash from incorrect Thai translation" +msgstr "" + +#: src/changelog/v2.10.md:25 +msgid "Version 2.10 (2020-05-12)" +msgstr "" + +#: src/changelog/v2.10.md:26 +msgid "Add welcome dialog explaining need for storage permission" +msgstr "" + +#: src/changelog/v2.10.md:27 +msgid "Add support for Flags on cards (including flagging by gesture)" +msgstr "" + +#: src/changelog/v2.10.md:28 +msgid "Add ability to set background image in Deck Picker" +msgstr "" + +#: src/changelog/v2.10.md:29 +msgid "Add localization of standard templates created in fresh install" +msgstr "" + +#: src/changelog/v2.10.md:30 +msgid "Add support for card javascript to reload current card programmatically" +msgstr "" + +#: src/changelog/v2.10.md:31 +msgid "Add support for restricted learning / classroom devices" +msgstr "" + +#: src/changelog/v2.10.md:32 +msgid "Add preference to disable \"Extended Text UI\" full-screen editor" +msgstr "" + +#: src/changelog/v2.10.md:33 +msgid "Add CSS style capability to heavy checkmark and down arrow in card" +msgstr "" + +#: src/changelog/v2.10.md:34 +msgid "Add display of current interval on reschedule dialog" +msgstr "" + +#: src/changelog/v2.10.md:35 +msgid "Add support for card javascript to answer cards programmatically" +msgstr "" + +#: src/changelog/v2.10.md:36 +msgid "Add ability to toggle sticky field in field editor" +msgstr "" + +#: src/changelog/v2.10.md:37 +msgid "Improve deck list newline, style, script tag handling in deck descriptions" +msgstr "" + +#: src/changelog/v2.10.md:38 +msgid "Improve whiteboard on/off state handling, especially between day/night mode" +msgstr "" + +#: src/changelog/v2.10.md:39 +msgid "Improve multi-selection options in CardBrowser" +msgstr "" + +#: src/changelog/v2.10.md:40 +msgid "Improve performance (systematic optimization process, lots of improvements!)" +msgstr "" + +#: src/changelog/v2.10.md:41 +msgid "Improve handling of erroneous notes (missing fields, improper clozes)" +msgstr "" + +#: src/changelog/v2.10.md:42 +msgid "Improve user messaging on network connection failures" +msgstr "" + +#: src/changelog/v2.10.md:43 +msgid "Improve counting of suspended/buried cards in advanced statistics" +msgstr "" + +#: src/changelog/v2.10.md:44 +msgid "Improve v2 scheduler compatibility with Anki ecosystem" +msgstr "" + +#: src/changelog/v2.10.md:45 +msgid "Improve handling / detection of full sync need" +msgstr "" + +#: src/changelog/v2.10.md:46 +msgid "Improve Anki compatibility by allowing more field/model/deck name characters" +msgstr "" + +#: src/changelog/v2.10.md:47 +msgid "Improve deck list estimated review times with human scale times" +msgstr "" + +#: src/changelog/v2.10.md:48 +msgid "Fix text scaling bug in card browser" +msgstr "" + +#: src/changelog/v2.10.md:49 +msgid "Fix crash in export while using v2 scheduler" +msgstr "" + +#: src/changelog/v2.10.md:50 +msgid "Fix Custom Tabs crash with non-default system web browser" +msgstr "" + +#: src/changelog/v2.10.md:51 +msgid "Fix issues with import of packages with long Unicode names" +msgstr "" + +#: src/changelog/v2.10.md:52 +msgid "Fix incorrect intervals on lapsed filtered v2 scheduler cards" +msgstr "" + +#: src/changelog/v2.10.md:53 +msgid "Fix multimedia editor save/cancel behavior" +msgstr "" + +#: src/changelog/v2.10.md:54 +msgid "Fix incorrect button/gesture availability while existing task is still active" +msgstr "" + +#: src/changelog/v2.10.md:55 +msgid "Fix type answer crash on invalid characters" +msgstr "" + +#: src/changelog/v2.10.md:56 +msgid "Fix cloze references not being recognized in all fields" +msgstr "" + +#: src/changelog/v2.10.md:57 +msgid "Fix invalid ability to change deck to a filtered deck" +msgstr "" + +#: src/changelog/v2.10.md:58 +msgid "Fix crashes on adding invalid images, audios, and videos" +msgstr "" + +#: src/changelog/v2.10.md:59 +msgid "Fix CardBrowser crash after deleting card" +msgstr "" + +#: src/changelog/v2.10.md:60 +msgid "Fix crash and help user if no browser detected" +msgstr "" + +#: src/changelog/v2.10.md:61 +msgid "Fix Reviewer crash if card not available" +msgstr "" + +#: src/changelog/v2.10.md:62 +msgid "Fix crash / improve import of pasted decks" +msgstr "" + +#: src/changelog/v2.10.md:63 +msgid "Fix clicking hint field blocks key input in Reviewer" +msgstr "" + +#: src/changelog/v2.10.md:64 +msgid "Fix Previewer forgetting which card to show on device rotation" +msgstr "" + +#: src/changelog/v2.10.md:65 +msgid "Fix Mathjax/cloze interactions" +msgstr "" + +#: src/changelog/v2.10.md:66 +msgid "Fix vertical alignment of touch area in full-screen review" +msgstr "" + +#: src/changelog/v2.10.md:67 +msgid "Fix handling of ':::' in deck names" +msgstr "" + +#: src/changelog/v2.10.md:68 +msgid "Fix incorrect display of HTML comments in card browser" +msgstr "" + +#: src/changelog/v2.9.md:1 +msgid "Version 2.9.7 (2020-04-30)" +msgstr "" + +#: src/changelog/v2.9.md:2 +msgid "Fix crash / workaround deck options timer config regression in AnkiDesktop" +msgstr "" + +#: src/changelog/v2.9.md:4 +msgid "Version 2.9.6 (2020-04-03)" +msgstr "" + +#: src/changelog/v2.9.md:5 +msgid "Fix multimedia crashes (permissions handling, image add, preview)" +msgstr "" + +#: src/changelog/v2.9.md:6 +msgid "Fix UI and crashes in database check (user dialog + exception handling)" +msgstr "" + +#: src/changelog/v2.9.md:7 +msgid "Fix Windows 10 image compatibility issue with image paths" +msgstr "" + +#: src/changelog/v2.9.md:8 +msgid "Fix AnkiDesktop sync compatibility issue if more than 1000 cards due" +msgstr "" + +#: src/changelog/v2.9.md:9 +msgid "Fix crash in card browser render" +msgstr "" + +#: src/changelog/v2.9.md:10 +msgid "Fix parsing of image tags in card browser" +msgstr "" + +#: src/changelog/v2.9.md:11 +msgid "Fix crash in StudyOptionsFragment" +msgstr "" + +#: src/changelog/v2.9.md:12 +msgid "Fix issue with deck options group changing on export" +msgstr "" + +#: src/changelog/v2.9.md:13 +msgid "Fix issue with exports containing unexpected media" +msgstr "" + +#: src/changelog/v2.9.md:14 +msgid "Fix issue with dynamic decks (crash fix, export fix)" +msgstr "" + +#: src/changelog/v2.9.md:15 +msgid "Fix high frequency issue \"AnkiDroid directory is inaccessible\"" +msgstr "" + +#: src/changelog/v2.9.md:16 +msgid "Fix high frequency WebView (card viewer) crash" +msgstr "" + +#: src/changelog/v2.9.md:17 +msgid "Add columns to card browser (due, ease, changed, created, edited)" +msgstr "" + +#: src/changelog/v2.9.md:18 +msgid "Fix card scheduler not respecting maximum intervals" +msgstr "" + +#: src/changelog/v2.9.md:19 +msgid "Fix card browser spins forever on images or empty strings" +msgstr "" + +#: src/changelog/v2.9.md:21 +msgid "Version 2.9.5 (2020-03-15)" +msgstr "" + +#: src/changelog/v2.9.md:22 +msgid "Fix crash rendering card list while updating card browser search" +msgstr "" + +#: src/changelog/v2.9.md:23 +msgid "Fix case-sensitivity issue with pronunciation words not being found" +msgstr "" + +#: src/changelog/v2.9.md:24 +msgid "Fix crash caused by auto-sync on startup showing dialog too soon" +msgstr "" + +#: src/changelog/v2.9.md:25 +msgid "Fix crash on preview of TTS cards showing language selectiond dialog too slowly" +msgstr "" + +#: src/changelog/v2.9.md:26 +msgid "Fix crash on import if collection not found" +msgstr "" + +#: src/changelog/v2.9.md:27 +msgid "Fix Anki ecosystem deck configuration issue for Anki Desktop users \\<= 2.16" +msgstr "" + +#: src/changelog/v2.9.md:28 +msgid "Fix crash if user attempts to open camera or gallery and no app is available" +msgstr "" + +#: src/changelog/v2.9.md:29 +msgid "Fix crash building deck reminders while deck is synchronizing" +msgstr "" + +#: src/changelog/v2.9.md:30 +msgid "Fix crash related to audio recording stop" +msgstr "" + +#: src/changelog/v2.9.md:31 +msgid "Show helpful messages if import fails because device is out of space" +msgstr "" + +#: src/changelog/v2.9.md:32 +msgid "Fix crash when taking pictures on devices with Lollipop and older" +msgstr "" + +#: src/changelog/v2.9.md:34 +msgid "Version 2.9.4 (2020-02-18)" +msgstr "" + +#: src/changelog/v2.9.md:35 +msgid "Fix crash when fetching pronunciations in note editor" +msgstr "" + +#: src/changelog/v2.9.md:36 +msgid "Fix issue with pronunciation words not being found" +msgstr "" + +#: src/changelog/v2.9.md:37 +msgid "Fix crash on startup for users with auto-sync on startup" +msgstr "" + +#: src/changelog/v2.9.md:38 +msgid "Fix crash on deck import when app is in background" +msgstr "" + +#: src/changelog/v2.9.md:39 +msgid "Fix crash for users of Google Chrome Canary" +msgstr "" + +#: src/changelog/v2.9.md:40 +msgid "Fix crash when adding certain audio clips" +msgstr "" + +#: src/changelog/v2.9.md:41 +msgid "Fix crash related to fetching Sound metadata" +msgstr "" + +#: src/changelog/v2.9.md:42 +msgid "Fix issue where audio plays twice" +msgstr "" + +#: src/changelog/v2.9.md:44 +msgid "Version 2.9.3 (2020-02-09)" +msgstr "" + +#: src/changelog/v2.9.md:45 +msgid "Fix issues with connection timeouts and new encryption library" +msgstr "" + +#: src/changelog/v2.9.md:46 +msgid "Fix incorrect handling of decks with ':::' in their name" +msgstr "" + +#: src/changelog/v2.9.md:48 +msgid "Version 2.9.2 (2020-02-03)" +msgstr "" + +#: src/changelog/v2.9.md:49 +msgid "Add support for new AnkiWeb encryption changes" +msgstr "" + +#: src/changelog/v2.9.md:50 +msgid "Fix some bugs using filtered decks" +msgstr "" + +#: src/changelog/v2.9.md:51 +msgid "Fix crash on app startup with uninitialized collection" +msgstr "" + +#: src/changelog/v2.9.md:52 +msgid "Fix some issues with new cloze deletion menu" +msgstr "" + +#: src/changelog/v2.9.md:53 +msgid "Fix issue with Mathjax + cloze deletion" +msgstr "" + +#: src/changelog/v2.9.md:54 +msgid "Fix incorrect intervals bug with new scheduler" +msgstr "" + +#: src/changelog/v2.9.md:55 +msgid "Add various patches from Anki Desktop" +msgstr "" + +#: src/changelog/v2.9.md:57 +msgid "Version 2.9.1 (2019-10-16)" +msgstr "" + +#: src/changelog/v2.9.md:58 +msgid "Fix crash reviewing on Android 5 - 7" +msgstr "" + +#: src/changelog/v2.9.md:59 +msgid "Fix crash on Hungarian translation" +msgstr "" + +#: src/changelog/v2.9.md:61 +msgid "Version 2.9 (2019-10-14)" +msgstr "" + +#: src/changelog/v2.9.md:62 +msgid "Change to new adaptive icon" +msgstr "" + +#: src/changelog/v2.9.md:63 +msgid "Add multi-select in the card browser (delete, change deck, reschedule)" +msgstr "" + +#: src/changelog/v2.9.md:64 +msgid "Add support for new Anki 2.1 scheduler" +msgstr "" + +#: src/changelog/v2.9.md:65 +msgid "Add support for Mathjax" +msgstr "" + +#: src/changelog/v2.9.md:66 +msgid "Add ability to add local audio files to notes" +msgstr "" + +#: src/changelog/v2.9.md:67 +msgid "Add ability to specify filename and folder on export and import" +msgstr "" + +#: src/changelog/v2.9.md:68 +msgid "Add ability to insert cloze in Note Editor" +msgstr "" + +#: src/changelog/v2.9.md:69 +msgid "Add ability to reposition cards " +msgstr "" + +#: src/changelog/v2.9.md:70 +msgid "Add ability to use due reminders for specific decks" +msgstr "" + +#: src/changelog/v2.9.md:71 +msgid "Add support for gamepad input when reviewing" +msgstr "" + +#: src/changelog/v2.9.md:72 +msgid "Add support for common keyboard shortcuts from Anki Desktop" +msgstr "" + +#: src/changelog/v2.9.md:73 +msgid "Add ability to search in Card Browser for text from system context menu" +msgstr "" + +#: src/changelog/v2.9.md:74 +msgid "Add ability to recognize tts HTML elements in questions and answers" +msgstr "" + +#: src/changelog/v2.9.md:75 +msgid "Add ability to display LaTeX rendered to SVG (vs PNG) from Anki Desktop" +msgstr "" + +#: src/changelog/v2.9.md:76 +msgid "Add confirmation check for full sync trigger in preferences" +msgstr "" + +#: src/changelog/v2.9.md:77 +msgid "Fix excessive pull-to-sync false positives. Disable when not at top of page." +msgstr "" + +#: src/changelog/v2.9.md:78 +msgid "Fix some issues with focus in Note Editor" +msgstr "" + +#: src/changelog/v2.9.md:79 +msgid "Fix media sync errors related to file creation issues" +msgstr "" + +#: src/changelog/v2.9.md:80 +msgid "Fix crash related to use of camera without permission or no camera hardware " +msgstr "" + +#: src/changelog/v2.9.md:81 +msgid "Fix crash related to Card Browser allowing preview with no cards selected" +msgstr "" + +#: src/changelog/v2.9.md:82 +msgid "Fix crash in Reviewer when collection inaccessible" +msgstr "" + +#: src/changelog/v2.9.md:83 +msgid "Fix crash related to TTS when TTS not initialized" +msgstr "" + +#: src/changelog/v2.9.md:84 +msgid "Fix crash related to sdcard mount/unmount on inaccessible collection" +msgstr "" + +#: src/changelog/v2.9.md:85 +msgid "Fix crash related to audio button being visible after loading pronunciation media" +msgstr "" + +#: src/changelog/v2.9.md:86 +msgid "Fix crash when attempting to import invalid zip files " +msgstr "" + +#: src/changelog/v2.9.md:87 +msgid "Fix crash related to switching from split-window mode to single-window mode" +msgstr "" + +#: src/changelog/v2.9.md:88 +msgid "Fix crash related to missing preferences in Preference editor" +msgstr "" + +#: src/changelog/v2.9.md:89 +msgid "Fix crash on deck selection after deleting a deck and immediately closing app" +msgstr "" + +#: src/changelog/v2.9.md:90 +msgid "Fix crash in Reviewer when non-standard browser installed" +msgstr "" + +#: src/changelog/v2.9.md:91 +msgid "Fix type-answer field showing unexpectedly after undo in Reviewer" +msgstr "" + +#: src/changelog/v2.9.md:92 +msgid "Fix incorrect display of some characters when using type-answer" +msgstr "" + +#: src/changelog/v2.9.md:93 +msgid "Fix error related to media in subfolders not showing in Reviewer" +msgstr "" + +#: src/changelog/v2.9.md:94 +msgid "Fix some issues with generated flashcard html and CSS selectors" +msgstr "" + +#: src/changelog/v2.9.md:95 +msgid "Fix some Glosbe and Beolingus regressions" +msgstr "" + +#: src/changelog/v2.9.md:96 +msgid "Fix issue where new deck was created when note type was renamed" +msgstr "" + +#: src/changelog/v2.9.md:97 +msgid "Fix add note button disappearing from Card Browser when returning from search" +msgstr "" + +#: src/changelog/v2.9.md:98 +msgid "Fix some statistics display issues " +msgstr "" + +#: src/changelog/v2.9.md:99 +msgid "Fix incorrect display of some preferences" +msgstr "" + +#: src/changelog/v2.9.md:100 +msgid "Fix invisible notification bar in NoteEditor" +msgstr "" + +#: src/changelog/v2.9.md:101 +msgid "Fix newline characters not working in cloze deletions" +msgstr "" + +#: src/changelog/v2.9.md:102 +msgid "Increase max card count display from 1000 to 99999" +msgstr "" + +#: src/changelog/v2.9.md:103 +msgid "Improve display handling of very long review intervals (> 68 years)" +msgstr "" + +#: src/changelog/v2.9.md:104 +msgid "Improve next/back buttons when using Previewer on multiple cards" +msgstr "" + +#: src/changelog/v2.9.md:105 +msgid "Improve handling of selected deck between statistics, card browser and deck picker" +msgstr "" + +#: src/changelog/v2.9.md:106 +msgid "Improve Card Browser search by restoring when returning from other activities" +msgstr "" + +#: src/changelog/v2.9.md:107 +msgid "Improve card focus handling when moving between Note Editor and Card Template Editor" +msgstr "" + +#: src/changelog/v2.9.md:108 +msgid "Improve labeling of deck-group vs deck-specific options" +msgstr "" + +#: src/changelog/v2.9.md:109 +msgid "Improve formatting of HTTP error codes during sync" +msgstr "" + +#: src/changelog/v2.9.md:110 +msgid "Improve handling of multi-touch events while whiteboard displayed" +msgstr "" + +#: src/changelog/v2.9.md:111 +msgid "Improve permission dialog descriptions" +msgstr "" + +#: src/changelog/v2.9.md:112 +msgid "Improve handling of \"preview new cards\" setting when creating custom study deck" +msgstr "" + +#: src/changelog/v2.9.md:113 +msgid "Improve Navigation Drawer performance on older devices" +msgstr "" + +#: src/changelog/v2.9.md:114 +msgid "Improve database check dialog with addition progress updates during check" +msgstr "" + +#: src/changelog/v2.9.md:115 +msgid "Use different notification channels for study reminders and general notifications" +msgstr "" + +#: src/changelog/v2.9.md:116 +msgid "Drop support for Android \\< Ice Cream Sandwich MR1 (API15, Android 4.0.3)" +msgstr "" + +#: src/changelog/v2.9.md:117 +msgid "Add support for more features on Chromebook (import, export, restore backup, camera)" +msgstr "" + +#: src/changelog/v2.9.md:118 +msgid "Add API support for card/note bury and suspend" +msgstr "" + +#: src/changelog/v2.9.md:119 +msgid "Add API to open Reviewer on specific decks from other apps" +msgstr "" + +#: src/changelog/v2.9.md:120 +msgid "Add support for HTML/Javascript debugging" +msgstr "" + +#: src/changelog/v2.9.md:121 +msgid "Add link to third party apps which support AnkiDroid API in advanced preferences" +msgstr "" + +#: src/changelog/v2.9.md:122 +msgid "Fix issue with custom sync server certificates" +msgstr "" + +#: src/changelog/v2.9.md:123 +msgid "Perform basic DB integrity check on app upgrade" +msgstr "" + +#: src/changelog/v2.9.md:124 +msgid "Introduce optional analytics reporting" +msgstr "" + +#: src/changelog/v2.8.md:1 +msgid "Version 2.8.4 (2018-04-27)" +msgstr "" + +#: src/changelog/v2.8.md:2 +msgid "Fix error syncing due to too many card templates" +msgstr "" + +#: src/changelog/v2.8.md:4 +msgid "Version 2.8.3 (2017-11-10)" +msgstr "" + +#: src/changelog/v2.8.md:5 +msgid "Fix crash adding a picture from camera" +msgstr "" + +#: src/changelog/v2.8.md:6 +msgid "Fix add note icon disappearing in browser after search" +msgstr "" + +#: src/changelog/v2.8.md:7 +msgid "Fix translations from Glosbe" +msgstr "" + +#: src/changelog/v2.8.md:8 +msgid "Fix crash long-tapping when no deck is selected" +msgstr "" + +#: src/changelog/v2.8.md:9 +msgid "Fix crash entering advanced settings on some devices" +msgstr "" + +#: src/changelog/v2.8.md:10 +msgid "Fix incorrect graph display in statistics" +msgstr "" + +#: src/changelog/v2.8.md:11 +msgid "Fix deck not changing properly in statistics" +msgstr "" + +#: src/changelog/v2.8.md:12 +msgid "Fix rounding error in statistics weekly breakdown" +msgstr "" + +#: src/changelog/v2.8.md:13 +msgid "Fix spurious new deck created on model rename" +msgstr "" + +#: src/changelog/v2.8.md:14 +msgid "Improve error message on exception during media sync" +msgstr "" + +#: src/changelog/v2.8.md:15 +msgid "Improve animation when transitioning between screens" +msgstr "" + +#: src/changelog/v2.8.md:16 +msgid "Use a round icon on devices that support it" +msgstr "" + +#: src/changelog/v2.8.md:18 +msgid "Version 2.8.2 (2017-02-28)" +msgstr "" + +#: src/changelog/v2.8.md:19 +msgid "Fix bugs showing confirmation dialogs in various places" +msgstr "" + +#: src/changelog/v2.8.md:20 +msgid "Fix uncommon crash showing dialog after sync" +msgstr "" + +#: src/changelog/v2.8.md:22 +msgid "Version 2.8.1 (2017-02-06)" +msgstr "" + +#: src/changelog/v2.8.md:23 +msgid "Allow sending exported apkg to arbitrary app (e.g. Google Drive)" +msgstr "" + +#: src/changelog/v2.8.md:24 +msgid "Allow AnkiWeb to display a warning on sync completion" +msgstr "" + +#: src/changelog/v2.8.md:25 +msgid "Fix potential full-sync after sync cancellation" +msgstr "" + +#: src/changelog/v2.8.md:26 +msgid "Fix media sync sometimes scanning all files again" +msgstr "" + +#: src/changelog/v2.8.md:27 +msgid "Fix removing $ character when importing media files" +msgstr "" + +#: src/changelog/v2.8.md:28 +msgid "Improve automatic card answer timing when audio is played" +msgstr "" + +#: src/changelog/v2.8.md:29 +msgid "Improve rendering of some statistics" +msgstr "" + +#: src/changelog/v2.8.md:30 +msgid "Fix some crashes in the Russian, Vietnamese, and Chinese translations" +msgstr "" + +#: src/changelog/v2.8.md:31 +msgid "Fix crash sending exported apkg by email. NB: Export path can no longer be modified." +msgstr "" + +#: src/changelog/v2.7.md:1 +msgid "Version 2.7 (2016-10-16)" +msgstr "" + +#: src/changelog/v2.7.md:2 +msgid "Add pull-to-sync feature" +msgstr "" + +#: src/changelog/v2.7.md:3 +msgid "Add option to place answer buttons at the top" +msgstr "" + +#: src/changelog/v2.7.md:4 +msgid "Add widget to directly access \"Add note\" screen" +msgstr "" + +#: src/changelog/v2.7.md:5 +msgid "Fix issue with importing whole collections and restoring backups" +msgstr "" + +#: src/changelog/v2.7.md:6 +msgid "Fix deck import failing after the first successful one" +msgstr "" + +#: src/changelog/v2.7.md:7 +msgid "Fix cards in learning queue not being randomized" +msgstr "" + +#: src/changelog/v2.7.md:8 +msgid "Fix crash with fullscreen mode and hidden answer buttons" +msgstr "" + +#: src/changelog/v2.7.md:9 +msgid "Fix rare crash when opening deck options" +msgstr "" + +#: src/changelog/v2.7.md:10 +msgid "Improve support with TalkBack" +msgstr "" + +#: src/changelog/v2.6.md:1 +msgid "Version 2.6.1 (2016-07-08)" +msgstr "" + +#: src/changelog/v2.6.md:2 +msgid "Add card cycling in previewer (similar to desktop client)" +msgstr "" + +#: src/changelog/v2.6.md:3 +msgid "Add option to hide 'minutes left' in reviewer" +msgstr "" + +#: src/changelog/v2.6.md:4 +msgid "Fix language from app setting not always being used" +msgstr "" + +#: src/changelog/v2.6.md:5 +msgid "Fix not being able to play back new sound recording" +msgstr "" + +#: src/changelog/v2.6.md:6 +msgid "Fix potential crash on Android 2.3 (Gingerbread)" +msgstr "" + +#: src/changelog/v2.6.md:7 +msgid "Improved use of horizontal space when resizing large images" +msgstr "" + +#: src/changelog/v2.6.md:8 +msgid "Minor adjustment to black theme colors" +msgstr "" + +#: src/changelog/v2.6.md:10 +msgid "Version 2.6 (2016-06-14)" +msgstr "" + +#: src/changelog/v2.6.md:11 +msgid "Add two new themes (black, plain), selectable in preferences" +msgstr "" + +#: src/changelog/v2.6.md:12 +msgid "Make reviewer app bar icons customizable" +msgstr "" + +#: src/changelog/v2.6.md:13 +msgid "Split \"hide / delete\" menu in reviewer into \"bury\", \"suspend\", \"delete note\"" +msgstr "" + +#: src/changelog/v2.6.md:14 +msgid "Reviewer undo button now removes last stroke when whiteboard in use" +msgstr "" + +#: src/changelog/v2.6.md:15 +msgid "Add menu entry to change TTS language from reviewer" +msgstr "" + +#: src/changelog/v2.6.md:16 +msgid "Add more of the statistics available on the desktop client" +msgstr "" + +#: src/changelog/v2.6.md:17 +msgid "Add \"advanced statistics\" plugin (must be enabled in advanced settings)" +msgstr "" + +#: src/changelog/v2.6.md:18 +msgid "Add setting to configure custom sync server (advanced)" +msgstr "" + +#: src/changelog/v2.6.md:19 +msgid "Fix card templates created in AnkiDroid incorrectly using bold style" +msgstr "" + +#: src/changelog/v2.6.md:20 +msgid "Fix many importing issues (behavior now consistent with the desktop client)" +msgstr "" + +#: src/changelog/v2.6.md:21 +msgid "Fix long-tapping card in browser not always working" +msgstr "" + +#: src/changelog/v2.6.md:22 +msgid "Update sound playback button image" +msgstr "" + +#: src/changelog/v2.6.md:23 +msgid "Reduce size of whiteboard and gesture area for better interoperability with full screen" +msgstr "" + +#: src/changelog/v2.6.md:24 +msgid "Improve error messages with inaccessible collections" +msgstr "" + +#: src/changelog/v2.6.md:25 +msgid "Allow auto-play of HTML media elements (for templates that enable it)" +msgstr "" + +#: src/changelog/v2.6.md:26 +msgid "Significant updates to the content provider and API (for developers; see documentation)" +msgstr "" + +#: src/changelog/v2.6.md:27 +msgid "Many small bug fixes, improvements, theme adjustments, translation updates" +msgstr "" + +#: src/changelog/v2.5.md:1 +msgid "Version 2.5.4 (2015-12-14)" +msgstr "" + +#: src/changelog/v2.5.md:2 +msgid "Fix background color in overflow menu of deck picker" +msgstr "" + +#: src/changelog/v2.5.md:4 +msgid "Version 2.5.3 (2015-12-14)" +msgstr "" + +#: src/changelog/v2.5.md:5 +msgid "Fix floating action button (blue +) interfering with deck list on Android 2.3" +msgstr "" + +#: src/changelog/v2.5.md:6 +msgid "Fix opening apkg files from Gmail" +msgstr "" + +#: src/changelog/v2.5.md:7 +msgid "Fix automatic playback of consecutive videos" +msgstr "" + +#: src/changelog/v2.5.md:8 +msgid "Add a new launch screen" +msgstr "" + +#: src/changelog/v2.5.md:9 +msgid "Improve behaviour surrounding the deck overview screen" +msgstr "" + +#: src/changelog/v2.5.md:10 +msgid "Multiple media files can now be added to one field in the note editor" +msgstr "" + +#: src/changelog/v2.5.md:11 +msgid "Don't include unused media files on export" +msgstr "" + +#: src/changelog/v2.5.md:12 +msgid "Undo behaviour is now consistent with the desktop client (can no longer undo note edits)" +msgstr "" + +#: src/changelog/v2.5.md:13 +msgid "Enhancements to sync canceling" +msgstr "" + +#: src/changelog/v2.5.md:14 +msgid "Minor performance enhancements, crash fixes, and UI tweaks" +msgstr "" + +#: src/changelog/v2.5.md:16 +msgid "Version 2.5.2 (2015-12-04)" +msgstr "" + +#: src/changelog/v2.5.md:17 +msgid "Fix start-up crashes on Samsung devices running Android 4.2" +msgstr "" + +#: src/changelog/v2.5.md:18 +msgid "Fix crash for new users on Android 6.0" +msgstr "" + +#: src/changelog/v2.5.md:19 +msgid "Reverted to old typing method. The new method is now an option which is off by default." +msgstr "" + +#: src/changelog/v2.5.md:20 +msgid "You can now click on the numbers in the right-most part of the deck list to open the deck overview screen" +msgstr "" + +#: src/changelog/v2.5.md:21 +msgid "Various fixes to transition animations and progress bars" +msgstr "" + +#: src/changelog/v2.5.md:22 +msgid "Add option to remove empty cards (previously only possible on desktop)" +msgstr "" + +#: src/changelog/v2.5.md:23 +msgid "Remove: Google Translate filter. In practice, this feature had no effect and is not required" +msgstr "" + +#: src/changelog/v2.5.md:24 +msgid "Remove: Google image search for multimedia card. The image search API has been discontinued by Google and no longer works" +msgstr "" + +#: src/changelog/v2.5.md:26 +msgid "Version 2.5.1 (2015-12-01)" +msgstr "" + +#: src/changelog/v2.5.md:27 +msgid "Fix crash when loading deck list (could not open collection bug)" +msgstr "" + +#: src/changelog/v2.5.md:28 +msgid "Fix visible progress bar showing when answering card" +msgstr "" + +#: src/changelog/v2.5.md:30 +msgid "Version 2.5 (2015-11-30)" +msgstr "" + +#: src/changelog/v2.5.md:31 +msgid "Redesign of user interface to use material design" +msgstr "" + +#: src/changelog/v2.5.md:32 +msgid "Add new dark theme" +msgstr "" + +#: src/changelog/v2.5.md:33 +msgid "Simplify the study process by bypassing deck overview screen" +msgstr "" + +#: src/changelog/v2.5.md:34 +msgid "Add ability to add, edit, delete note types" +msgstr "" + +#: src/changelog/v2.5.md:35 +msgid "Add setting to enable auto-sync and a Tasker intent to trigger sync" +msgstr "" + +#: src/changelog/v2.5.md:36 +msgid "Replace \"instant add\" feature with new API for 3rd party apps to add cards directly to AnkiDroid" +msgstr "" + +#: src/changelog/v2.5.md:37 +msgid "\"Type in the answer\" input box now built into the card html itself" +msgstr "" + +#: src/changelog/v2.5.md:38 +msgid "Make fullscreen-mode immersive and added setting to hide answer buttons when using gestures" +msgstr "" + +#: src/changelog/v2.5.md:39 +msgid "Add css class for customizing card background color when night mode is enabled" +msgstr "" + +#: src/changelog/v2.5.md:40 +msgid "Allow changing media volume from the deck picker" +msgstr "" + +#: src/changelog/v2.5.md:41 +msgid "Add ability to save and view common searches in the card browser" +msgstr "" + +#: src/changelog/v2.5.md:42 +msgid "Browser now shows full question and answer in the results by default" +msgstr "" + +#: src/changelog/v2.5.md:43 +msgid "Only show tags relevant to that deck when doing custom study by tag" +msgstr "" + +#: src/changelog/v2.5.md:44 +msgid "Fix some bugs in the widget" +msgstr "" + +#: src/changelog/v2.5.md:45 +msgid "Remove \"simple interface\"" +msgstr "" + +#: src/changelog/v2.5.md:46 +msgid "Remove support for Android version 2.1 and 2.2 (minimum is now 2.3.3)" +msgstr "" + +#: src/changelog/v2.5.md:47 +msgid "Add support for Android 6 Marshmallow" +msgstr "" + +#: src/changelog/v2.5.md:48 +msgid "Disable write-ahead-logging in sqlite database" +msgstr "" + +#: src/changelog/v2.5.md:49 +msgid "Many other bug fixes and small improvements" +msgstr "" + +#: src/changelog/v2.4.md:1 +msgid "Version 2.4.4 (2015-10-20)" +msgstr "" + +#: src/changelog/v2.4.md:2 +msgid "Fix playback of sound files with apostrophes in file name" +msgstr "" + +#: src/changelog/v2.4.md:3 +msgid "Fix new card siblings not being buried for the same day" +msgstr "" + +#: src/changelog/v2.4.md:4 +msgid "Fix media on cards when using the Hebrew Fix option" +msgstr "" + +#: src/changelog/v2.4.md:5 +msgid "Fix crashes related to \"Relative overdueness\" and make this sort order available on AnkiDroid" +msgstr "" + +#: src/changelog/v2.4.md:6 +msgid "When mixing new and review cards, make their rotation more consistent with desktop" +msgstr "" + +#: src/changelog/v2.4.md:8 +msgid "Version 2.4.3 (2015-04-21)" +msgstr "" + +#: src/changelog/v2.4.md:9 +msgid "Fix \"unknown field\" bug" +msgstr "" + +#: src/changelog/v2.4.md:10 +msgid "Fix crash showing welcome screen on Android 2.3" +msgstr "" + +#: src/changelog/v2.4.md:11 +msgid "Fix crash caused by widget" +msgstr "" + +#: src/changelog/v2.4.md:12 +msgid "Fix rare crash in browser" +msgstr "" + +#: src/changelog/v2.4.md:13 +msgid "Fix a couple of sync issues" +msgstr "" + +#: src/changelog/v2.4.md:14 +msgid "Fix crash starting AnkiDroid on a small number of devices" +msgstr "" + +#: src/changelog/v2.4.md:15 src/changelog/v2.4.md:29 +msgid "Update translations" +msgstr "" + +#: src/changelog/v2.4.md:17 +msgid "Version 2.4.2 (2015-03-18)" +msgstr "" + +#: src/changelog/v2.4.md:18 +msgid "Fix some bugs with cloze templates" +msgstr "" + +#: src/changelog/v2.4.md:19 +msgid "Fix a translation error" +msgstr "" + +#: src/changelog/v2.4.md:21 +msgid "Version 2.4.1 (2015-03-15)" +msgstr "" + +#: src/changelog/v2.4.md:22 +msgid "Fix some bugs with filtered decks" +msgstr "" + +#: src/changelog/v2.4.md:23 +msgid "Improve importing of shared decks" +msgstr "" + +#: src/changelog/v2.4.md:24 +msgid "Open settings if AnkiDroid dir inaccessible" +msgstr "" + +#: src/changelog/v2.4.md:25 +msgid "Fix a bug with zooming" +msgstr "" + +#: src/changelog/v2.4.md:26 +msgid "Fix a bug where old card was still shown in reviewer after changing deck" +msgstr "" + +#: src/changelog/v2.4.md:27 +msgid "Fix some issues with cloze deletion" +msgstr "" + +#: src/changelog/v2.4.md:28 +msgid "Fix various crashes" +msgstr "" + +#: src/changelog/v2.4.md:31 +msgid "Version 2.4 (2015-01-28)" +msgstr "" + +#: src/changelog/v2.4.md:32 +msgid "Move \"preview\" feature to browser" +msgstr "" + +#: src/changelog/v2.4.md:33 +msgid "Add ability to change note type of existing flashcards" +msgstr "" + +#: src/changelog/v2.4.md:34 +msgid "Add ability to view and delete card templates" +msgstr "" + +#: src/changelog/v2.4.md:35 +msgid "Fix TTS for most devices" +msgstr "" + +#: src/changelog/v2.4.md:36 +msgid "Support playback of videos (see supported formats [here](http://developer.android.com/guide/appendix/media-formats.html))" +msgstr "" + +#: src/changelog/v2.4.md:37 +msgid "Improve rendering of second column in browser" +msgstr "" + +#: src/changelog/v2.4.md:38 +msgid "Improve detection of swipe gestures" +msgstr "" + +#: src/changelog/v2.4.md:39 +msgid "Increase number of languages in Glosbe translator" +msgstr "" + +#: src/changelog/v2.4.md:40 +msgid "Add support for Chromebooks" +msgstr "" + +#: src/changelog/v2.4.md:41 +msgid "New crash report system" +msgstr "" + +#: src/changelog/v2.4.md:42 +msgid "Bug fixes" +msgstr "" + +#: src/changelog/v2.3.md:1 +msgid "Version 2.3.2 (2014-11-06)" +msgstr "" + +#: src/changelog/v2.3.md:2 +msgid "Bug fixes: Sync, TTS, Remote images, Advanced editor, Export" +msgstr "" + +#: src/changelog/v2.3.md:3 +msgid "Note: This is the last version of AnkiDroid supported by AnkiWeb. Previous versions will not sync." +msgstr "" + +#: src/changelog/v2.3.md:5 +msgid "Version 2.3 (2014-10-27)" +msgstr "" + +#: src/changelog/v2.3.md:6 +msgid "Add new user manual" +msgstr "" + +#: src/changelog/v2.3.md:7 +msgid "Make statistics identical to Anki Desktop" +msgstr "" + +#: src/changelog/v2.3.md:8 +msgid "Fixes to media sync" +msgstr "" + +#: src/changelog/v2.3.md:9 +msgid "Fix bug where images were not showing" +msgstr "" + +#: src/changelog/v2.3.md:10 +msgid "Change layout of note editor" +msgstr "" + +#: src/changelog/v2.3.md:11 +msgid "Add new disable whiteboard option to reviewer and update icons" +msgstr "" + +#: src/changelog/v2.3.md:12 +msgid "Add full support for APKG export and import" +msgstr "" + +#: src/changelog/v2.3.md:13 +msgid "Add feature to email exported APKG" +msgstr "" + +#: src/changelog/v2.3.md:14 +msgid "Increase default number of backups and use APKG" +msgstr "" + +#: src/changelog/v2.3.md:15 +msgid "Make preview card accessible from card browser" +msgstr "" + +#: src/changelog/v2.3.md:16 +msgid "Make shared decks download with Android browser" +msgstr "" + +#: src/changelog/v2.3.md:17 +msgid "Add reset and reschedule feature in note editor" +msgstr "" + +#: src/changelog/v2.3.md:18 +msgid "Add a new notification system and icon" +msgstr "" + +#: src/changelog/v2.3.md:19 +msgid "Replace tutorial deck with new welcome screen" +msgstr "" + +#: src/changelog/v2.3.md:20 +msgid "Disable opening navigation drawer from reviewer when swipe is used" +msgstr "" + +#: src/changelog/v2.3.md:21 +msgid "Improve audio recording quality" +msgstr "" + +#: src/changelog/v2.3.md:22 +msgid "Support sticky fields when enabled in Anki Desktop" +msgstr "" + +#: src/changelog/v2.3.md:23 +msgid "Many other bug fixes" +msgstr "" + +#: src/changelog/v2.2.md:1 +msgid "Version 2.2.3 (2014-08-04)" +msgstr "" + +#: src/changelog/v2.2.md:2 +msgid "New media sync protocol" +msgstr "" + +#: src/changelog/v2.2.md:3 +msgid "Fix 2 bugs for opening links and resuming the app" +msgstr "" + +#: src/changelog/v2.2.md:5 +msgid "Version 2.2 (2014-07-21)" +msgstr "" + +#: src/changelog/v2.2.md:6 +msgid "Redesign layout" +msgstr "" + +#: src/changelog/v2.2.md:7 +msgid "Add pictures and sounds to flashcards (experimental)" +msgstr "" + +#: src/changelog/v2.2.md:8 +msgid "Make second column in card browser configurable" +msgstr "" + +#: src/changelog/v2.2.md:9 +msgid "Make images on flashcards zoomable" +msgstr "" + +#: src/changelog/v2.2.md:10 +msgid "Improve preview feature and access via action bar" +msgstr "" + +#: src/changelog/v2.2.md:11 +msgid "Simplify menus and settings" +msgstr "" + +#: src/changelog/v2.2.md:12 +msgid "Make slow searches in card browser cancellable" +msgstr "" + +#: src/changelog/v2.2.md:13 +msgid "Improve adding/removing tags" +msgstr "" + +#: src/changelog/v2.2.md:14 +msgid "Fix \"type in the answer\" and cloze deletion features" +msgstr "" + +#: src/changelog/v2.2.md:15 +msgid "Fix whiteboard feature" +msgstr "" + +#: src/changelog/v2.2.md:16 +msgid "Restore backups from within the app" +msgstr "" + +#: src/changelog/v2.2.md:17 +msgid "Make volume duck on any background music when sounds played" +msgstr "" + +#: src/changelog/v2.2.md:18 +msgid "Make playing of sounds consistent with Desktop version" +msgstr "" + +#: src/changelog/v2.2.md:19 +msgid "Remove animations feature due to being buggy" +msgstr "" + +#: src/changelog/v2.2.md:20 +msgid "Improve speed of showing cards" +msgstr "" + +#: src/changelog/v2.2.md:21 +msgid "Remove duplicate check dialog when adding new flashcards" +msgstr "" + +#: src/changelog/v2.2.md:22 +msgid "Remove swap button when adding or editing flashcards" +msgstr "" + +#: src/changelog/v2.2.md:23 +msgid "Remove kanji info feature (will become optional plugin in the future)" +msgstr "" + +#: src/changelog/v2.2.md:24 +msgid "Make minimum Android version 2.1" +msgstr "" + +#: src/changelog/v2.2.md:25 +msgid "Fix lots of bugs" +msgstr "" + +#: src/changelog/v2.1.md:1 +msgid "Version 2.1.3 (2014-04-05)" +msgstr "" + +#: src/changelog/v2.1.md:2 +msgid "Create new notes in correct deck" +msgstr "" + +#: src/changelog/v2.1.md:3 +msgid "TTS fixes" +msgstr "" + +#: src/changelog/v2.1.md:5 +msgid "Version 2.1 (2014-03-27)" +msgstr "" + +#: src/changelog/v2.1.md:6 +msgid "Lots of Bug Fixes" +msgstr "" + +#: src/changelog/v2.1.md:7 +msgid "New custom study option with improved tag selection" +msgstr "" + +#: src/changelog/v2.1.md:8 +msgid "New preview card feature in note editor (experimental)" +msgstr "" + +#: src/changelog/v2.1.md:9 +msgid "New override font preference in addition to default font" +msgstr "" + +#: src/changelog/v2.1.md:10 +msgid "New \"Kanji Info\" feature (enabled in preferences->reviewing->Kanji Info)" +msgstr "" + +#: src/changelog/v2.1.md:11 +msgid "Improve Aedict integration" +msgstr "" + +#: src/changelog/v2.1.md:12 +msgid "Support for Samsung Multi-Window" +msgstr "" + +#: src/changelog/v2.1.md:13 +msgid "Fix Some TTS Issues" +msgstr "" + +#: src/changelog/v2.1.md:14 +msgid "Updated Translations" +msgstr "" + +#: src/changelog/v2.1.md:15 +msgid "Remove unused media check when deleting decks" +msgstr "" + +#: src/changelog/v2.1.md:16 +msgid "Significantly increase speed for reducing filtered decks" +msgstr "" + +#: src/changelog/v2.1.md:17 +msgid "Remove upgrade wizard" +msgstr "" + +#: src/changelog/v2.0.md:1 +msgid "Version 2.0.4 (2014-02-03)" +msgstr "" + +#: src/changelog/v2.0.md:2 +msgid "Fix issue with typing answers" +msgstr "" + +#: src/changelog/v2.0.md:3 +msgid "Default font now overrides card font" +msgstr "" + +#: src/changelog/v2.0.md:4 +msgid "Fixed audio playback image being covered by text on Android 2.3" +msgstr "" + +#: src/changelog/v2.0.md:5 +msgid "Fixed reviewer crash when language set to Romanian" +msgstr "" + +#: src/changelog/v2.0.md:6 +msgid "Translation fixes" +msgstr "" + +#: src/changelog/v2.0.md:8 +msgid "Version 2.0.2 (2013-12-15)" +msgstr "" + +#: src/changelog/v2.0.md:9 +msgid "Fixed lots of crashes" +msgstr "" + +#: src/changelog/v2.0.md:10 +msgid "Tablet UI fixes" +msgstr "" + +#: src/changelog/v2.0.md:11 +msgid "Fixed new card ordering issues" +msgstr "" + +#: src/changelog/v2.0.md:12 +msgid "Card appearance now matches desktop Anki. (Centering cards is off by default but can be re-enabled)" +msgstr "" + +#: src/changelog/v2.0.md:13 +msgid "Option groups can now be changed in AnkiDroid" +msgstr "" + +#: src/changelog/v2.0.md:14 +msgid "Clear error message when using a bad template" +msgstr "" + +#: src/changelog/v2.0.md:15 +msgid "Fixed timeboxing notifications" +msgstr "" + +#: src/changelog/v2.0.md:16 +msgid "Properly scale images" +msgstr "" + +#: src/changelog/v2.0.md:17 +msgid "Better custom font handling" +msgstr "" + +#: src/changelog/v2.0.md:18 +msgid "More settings (next day starts at, timeboxing value, etc.)" +msgstr "" + +#: src/changelog/v2.0.md:19 +msgid "Changing AnkiDroid interface language now works." +msgstr "" + +#: src/changelog/v2.0.md:20 +msgid "Fixed import/shared deck download issues (\"not a valid apkg file\")" +msgstr "" + +#: src/changelog/v2.0.md:21 +msgid "Fixed invisible text on Motorola devices" +msgstr "" + +#: src/changelog/v2.0.md:22 +msgid "Focus on answer when revealed" +msgstr "" + +#: src/changelog/v2.0.md:23 +msgid "Filtered decks are now blue in deck list" +msgstr "" + +#: src/changelog/v2.0.md:24 +msgid "Removed unused circle button in note editor" +msgstr "" + +#: src/changelog/v2.0.md:26 +msgid "Version 2.0.1 (2013-02-06)" +msgstr "" + +#: src/changelog/v2.0.md:27 +msgid "Upgrade wizard" +msgstr "" + +#: src/changelog/v2.0.md:28 +msgid "Fix importing apkgs" +msgstr "" + +#: src/changelog/v2.0.md:29 +msgid "Fix media syncing" +msgstr "" + +#: src/changelog/v2.0.md:31 +msgid "Version 2.0 (2013-01-03)" +msgstr "" + +#: src/changelog/v2.0.md:32 +msgid "complete revision" +msgstr "" + +#: src/changelog/v2.0.md:33 +msgid "libanki2.0 scheduling" +msgstr "" + +#: src/changelog/v2.0.md:34 +msgid "new learning mode" +msgstr "" + +#: src/changelog/v2.0.md:35 +msgid "new layout" +msgstr "" + +#: src/changelog/v2.0.md:36 +msgid "merge syncing possible now" +msgstr "" + +#: src/changelog/v2.0.md:37 +msgid "better statistics" +msgstr "" + +#: src/changelog/v2.0.md:38 +msgid "decks are now saved in a single collection" +msgstr "" + +#: src/changelog/v2.0.md:39 +msgid "options are shareable now" +msgstr "" + +#: src/changelog/v2.0.md:40 +msgid "tablet layout" +msgstr "" + +#: src/changelog/v2.0.md:41 +msgid "tons of performance improvements" +msgstr "" + +#: src/changelog/v2.0.md:42 +msgid "card import function" +msgstr "" + +#: src/changelog/v2.0.md:43 +msgid "collection can be saved on internal memory" +msgstr "" + +#: src/changelog/v0.1-to-1.1.3.md:2 +msgid "AnkiDroid has continuously evolved collectively as an open source project, with the first version released to the Google Market on [June 28 2009](http://nicolas-raoul.blogspot.jp/2009/06/just-published-ankidroid-on-market.html). " +msgstr "" + +#: src/changelog/v0.1-to-1.1.3.md:4 +msgid "Version 1.1.3 was the last 1.x version (released on 26th June 2012), before the incompatible AnkiDroid v2.0 was released, essentially rewritten from scratch to be compatible with the new Anki Desktop v2.0." +msgstr "" + diff --git a/po/zh-CN.po b/po/zh-CN.po new file mode 100644 index 0000000..0328619 --- /dev/null +++ b/po/zh-CN.po @@ -0,0 +1,6445 @@ +msgid "" +msgstr "" +"Project-Id-Version: ankidroiddocs\n" +"POT-Creation-Date: 2024-02-01T17:14:41Z\n" +"PO-Revision-Date: 2024-02-01 17:15\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: ankidroiddocs\n" +"X-Crowdin-Project-ID: 645072\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: messages.pot\n" +"X-Crowdin-File-ID: 2\n" + +#: src/SUMMARY.md:1 +msgid "Summary" +msgstr "" + +#: src/SUMMARY.md:3 src/intro.md:1 src/intro.md:1 +msgid "Introduction" +msgstr "导 言" + +#: src/SUMMARY.md:4 src/getting-started.md:1 +msgid "Getting started" +msgstr "入门开始" + +#: src/SUMMARY.md:6 src/deck-picker.md:1 +msgid "The Deck List" +msgstr "牌组列表" + +#: src/SUMMARY.md:8 src/drawer.md:1 +msgid "Navigation Drawer" +msgstr "导航栏" + +#: src/SUMMARY.md:10 src/deck-overview.md:1 +msgid "Deck Overview Screen" +msgstr "牌组概览屏幕" + +#: src/SUMMARY.md:12 src/reviewer.md:1 +msgid "Study Screen" +msgstr "学习屏幕" + +#: src/SUMMARY.md:14 src/adding-notes.md:1 +msgid "Add Note Screen" +msgstr "添加笔记屏幕" + +#: src/SUMMARY.md:16 src/editing-notes.md:1 +msgid "Edit Note Screen" +msgstr "编辑笔记屏幕" + +#: src/SUMMARY.md:18 src/browser.md:1 +msgid "Finding/Searching/Browsing" +msgstr "" + +#: src/SUMMARY.md:20 src/filtered-deck.md:1 +msgid "Filtered Decks" +msgstr "" + +#: src/SUMMARY.md:22 src/importing/importing-anki-files.md:1 +msgid "Importing Anki Files" +msgstr "" + +#: src/SUMMARY.md:23 src/importing/importing-anki-databases.md:1 +msgid "Importing Anki Databases (.anki2)" +msgstr "" + +#: src/SUMMARY.md:25 src/exporting.md:1 +msgid "Exporting Anki Files" +msgstr "" + +#: src/SUMMARY.md:27 src/backups.md:1 +msgid "Automatic Backups" +msgstr "" + +#: src/SUMMARY.md:29 src/settings.md:1 +msgid "Preferences" +msgstr "" + +#: src/SUMMARY.md:31 src/gestures.md:1 +msgid "Gestures" +msgstr "" + +#: src/SUMMARY.md:33 src/note-formatting-toolbar.md:1 +msgid "Note Formatting Toolbar" +msgstr "" + +#: src/SUMMARY.md:35 src/keyboard-shortcuts.md:1 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/SUMMARY.md:37 src/rtl.md:1 +msgid "Using Right-To-Left Languages with AnkiDroid" +msgstr "" + +#: src/SUMMARY.md:39 src/anki-desktop.md:1 +msgid "Using Anki Desktop with AnkiDroid" +msgstr "" + +#: src/SUMMARY.md:41 src/ankiweb-conflicts.md:1 +msgid "Dealing with merge conflicts on AnkiWeb" +msgstr "" + +#: src/SUMMARY.md:43 src/advanced-features/intro.md:1 +msgid "Advanced Features" +msgstr "" + +#: src/SUMMARY.md:44 src/advanced-features/mathjax.md:1 +msgid "MathJax Support" +msgstr "" + +#: src/SUMMARY.md:45 src/advanced-features/reverse-cards.md:1 +msgid "Reverse Cards" +msgstr "" + +#: src/SUMMARY.md:46 src/advanced-features/custom-fonts.md:1 +msgid "Custom Fonts" +msgstr "" + +#: src/SUMMARY.md:47 src/advanced-features/customizing-card-layout.md:1 +msgid "Custom Card Layout" +msgstr "" + +#: src/SUMMARY.md:48 src/advanced-features/type-in-answer.md:1 +msgid "Type in the answer feature" +msgstr "" + +#: src/SUMMARY.md:49 src/gestures.md:146 +#: src/advanced-features/advanced-statistics.md:1 +msgid "Advanced Statistics" +msgstr "" + +#: src/SUMMARY.md:50 src/advanced-features/reminders.md:1 +msgid "Reminders" +msgstr "" + +#: src/SUMMARY.md:51 src/advanced-features/set-language-hint.md:1 +msgid "Automatic Language Selection" +msgstr "" + +#: src/SUMMARY.md:54 +msgid "Help & Supports" +msgstr "" + +#: src/SUMMARY.md:55 src/beta-testing.md:1 +msgid "Beta testing" +msgstr "" + +#: src/SUMMARY.md:56 src/help.md:33 src/contributing.md:1 +msgid "Contributing to AnkiDroid" +msgstr "" + +#: src/SUMMARY.md:57 +msgid "Changelog" +msgstr "" + +#: src/SUMMARY.md:58 +msgid "Version 2.15" +msgstr "" + +#: src/SUMMARY.md:59 +msgid "Version 2.14" +msgstr "" + +#: src/SUMMARY.md:60 +msgid "Version 2.13" +msgstr "" + +#: src/SUMMARY.md:61 +msgid "Version 2.12" +msgstr "" + +#: src/SUMMARY.md:62 +msgid "Version 2.11" +msgstr "" + +#: src/SUMMARY.md:63 +msgid "Version 2.10" +msgstr "" + +#: src/SUMMARY.md:64 +msgid "Version 2.9" +msgstr "" + +#: src/SUMMARY.md:65 +msgid "Version 2.8" +msgstr "" + +#: src/SUMMARY.md:66 +msgid "Version 2.7" +msgstr "" + +#: src/SUMMARY.md:67 +msgid "Version 2.6" +msgstr "" + +#: src/SUMMARY.md:68 +msgid "Version 2.5" +msgstr "" + +#: src/SUMMARY.md:69 +msgid "Version 2.4" +msgstr "" + +#: src/SUMMARY.md:70 +msgid "Version 2.3" +msgstr "" + +#: src/SUMMARY.md:71 +msgid "Version 2.2" +msgstr "" + +#: src/SUMMARY.md:72 +msgid "Version 2.1" +msgstr "" + +#: src/SUMMARY.md:73 +msgid "Version 2.0" +msgstr "" + +#: src/SUMMARY.md:74 src/changelog/v0.1-to-1.1.3.md:1 +msgid "Version 0.1 to 1.1.3" +msgstr "" + +#: src/intro.md:3 src/intro.md:3 +msgid "Thank you for using AnkiDroid, the Android client for the popular [Anki](http://ankisrs.net) spaced repetition system. " +msgstr "" + +#: src/intro.md:5 src/intro.md:5 +msgid "Anki is spaced repetition technique which is simple but highly effective. It helps you memorize things by automatically repeating them across increasing intervals based on your responses with no need for you to keep track of what to study or when to study it. You create notes (or download shared decks) with content you need to memorize, and the scheduler will make sure you see the content when you need to." +msgstr "" + +#: src/intro.md:7 src/intro.md:7 +msgid "AnkiDroid is intended to be used in conjunction with Anki on your computer. While it is possible to function without it, some tasks are either only possible with, or a lot more efficient with Anki Desktop. Furthermore, it is **strongly recommended** to at least read [`Key Concepts`](https://docs.ankiweb.net/getting-started.html#key-concepts) section of the main Anki manual to understand the terminology used here." +msgstr "" + +#: src/intro.md:9 src/intro.md:9 +msgid "If this manual doesn't contain what you are looking for, please check the [AnkiDroid Wiki](https://github.com/ankidroid/Anki-Android/wiki) for a list of changes, instructions for submitting bug reports and feature requests, a list of frequently asked questions, and much more." +msgstr "" + +#: src/getting-started.md:2 +msgid "To start using AnkiDroid, we need to add some cards to study. From the main screen, tapping the big blue plus button will allow you to either add a new **note** (i.e. create new flashcards), download shared decks (decks that other people have created and shared online), or create new empty decks." +msgstr "" + +#: src/getting-started.md:4 +msgid "Please watch this 5 minute [tutorial video](https://www.youtube.com/watch?v=F2K1gOSdIZA), which gives an introduction to adding, downloading, and studying cards in AnkiDroid. More detailed information can be found in the sections below." +msgstr "" + +#: src/getting-started.md:6 +msgid "If you are an existing user of Anki Desktop wishing to import your decks from the computer, you might like to skip straight to the [using AnkiDroid with Anki Desktop](anki-desktop.md#using-anki-desktop-with-ankidroid) section." +msgstr "" + +#: src/deck-picker.md:3 +msgid "[Add button](#add-button)" +msgstr "" + +#: src/deck-picker.md:4 +msgid "[Add](#add)" +msgstr "" + +#: src/deck-picker.md:5 +msgid "[Get shared decks](#get-shared-decks)" +msgstr "" + +#: src/deck-picker.md:6 +msgid "[Create deck](#create-deck)" +msgstr "" + +#: src/deck-picker.md:7 +msgid "[App Bar](#app-bar)" +msgstr "" + +#: src/deck-picker.md:8 +msgid "[Navigation menu button](#navigation-menu-button)" +msgstr "" + +#: src/deck-picker.md:9 +msgid "[Sync button](#sync-button)" +msgstr "" + +#: src/deck-picker.md:10 +msgid "[Overflow menu button](#overflow-menu-button)" +msgstr "" + +#: src/deck-picker.md:11 +msgid "[Studying a Deck](#studying-a-deck)" +msgstr "" + +#: src/deck-picker.md:12 +msgid "[Other Deck Actions](#other-deck-actions)" +msgstr "" + +#: src/deck-picker.md:13 +msgid "[Rename deck](#rename-deck)" +msgstr "" + +#: src/deck-picker.md:14 +msgid "[Deck options](#deck-options)" +msgstr "" + +#: src/deck-picker.md:15 +msgid "[Custom study](#custom-study)" +msgstr "" + +#: src/deck-picker.md:16 +msgid "[Delete deck](#delete-deck)" +msgstr "" + +#: src/deck-picker.md:17 +msgid "[Export deck](#export-deck)" +msgstr "" + +#: src/deck-picker.md:18 src/deck-overview.md:11 +msgid "[Unbury](#unbury)" +msgstr "" + +#: src/deck-picker.md:19 +msgid "[Rebuild / Empty](#rebuild--empty)" +msgstr "" + +#: src/deck-picker.md:20 +msgid "[Clickable areas on the decks](#clickable-areas-on-the-decks)" +msgstr "" + +#: src/deck-picker.md:21 +msgid "[Deck expander](#deck-expander)" +msgstr "" + +#: src/deck-picker.md:22 +msgid "[Deck name](#deck-name)" +msgstr "" + +#: src/deck-picker.md:23 +msgid "[Count buttons](#count-buttons)" +msgstr "" + +#: src/deck-picker.md:24 +msgid "[Advanced Actions](#advanced-actions)" +msgstr "" + +#: src/deck-picker.md:25 src/gestures.md:11 +msgid "[Undo](#undo)" +msgstr "" + +#: src/deck-picker.md:26 +msgid "[Check database](#check-database)" +msgstr "" + +#: src/deck-picker.md:27 +msgid "[Check media](#check-media)" +msgstr "" + +#: src/deck-picker.md:28 +msgid "[Empty cards](#empty-cards)" +msgstr "" + +#: src/deck-picker.md:29 +msgid "[Restore from backup](#restore-from-backup)" +msgstr "" + +#: src/deck-picker.md:30 +msgid "[Manage note types](#manage-note-types)" +msgstr "" + +#: src/deck-picker.md:31 +msgid "[Import](#import)" +msgstr "" + +#: src/deck-picker.md:32 +msgid "[Export collection](#export-collection)" +msgstr "" + +#: src/deck-picker.md:33 +msgid "[Deck Counts](#deck-counts)" +msgstr "" + +#: src/deck-picker.md:35 +msgid "__Note:__ _This section onwards assumes you understand what [decks and cards](https://docs.ankiweb.net/getting-started.html#key-concepts) are_" +msgstr "" + +#: src/deck-picker.md:37 +msgid "The deck list is the screen you see when you start AnkiDroid. It displays a list of the decks which contain all of your flashcards, and allows you to perform various actions:" +msgstr "" + +#: src/deck-picker.md:39 +msgid "![decks.png](img/1-decks.png)" +msgstr "" + +#: src/deck-picker.md:41 +msgid "Add button" +msgstr "" + +#: src/deck-picker.md:42 +msgid "The big blue + button in the bottom right corner is used to add new material to AnkiDroid. Pressing it expands to give the following three options, which are also described in the [tutorial video](https://www.youtube.com/watch?v=F2K1gOSdIZA)." +msgstr "" + +#: src/deck-picker.md:44 +msgid "Add" +msgstr "" + +#: src/deck-picker.md:45 +msgid "Choose this option if you want to create your own flashcards (notes) with AnkiDroid. \"Notes\" and \"cards\" have specific meanings in Anki, which are [explained in the main Anki manual](https://docs.ankiweb.net/getting-started.html#key-concepts). Please see the tutorial video for a quick introduction to adding notes, or refer to the [adding notes](adding-notes.md#add-note-screen) section below for more detailed information." +msgstr "" + +#: src/deck-picker.md:47 +msgid "Get shared decks" +msgstr "" + +#: src/deck-picker.md:48 +msgid "To download a deck of cards from the internet that another user has contributed:" +msgstr "" + +#: src/deck-picker.md:49 +msgid "Ensure you're connected to the internet." +msgstr "" + +#: src/deck-picker.md:50 +msgid "Tap + and then **Get shared decks**. AnkiWeb will open." +msgstr "" + +#: src/deck-picker.md:51 +msgid "Select a category, or type in a search." +msgstr "" + +#: src/deck-picker.md:52 +msgid "Tap **Info** on a deck you'd like to study." +msgstr "" + +#: src/deck-picker.md:53 +msgid "Scroll down and tap **Download**." +msgstr "" + +#: src/deck-picker.md:54 +msgid "You browser will download the file and display a `download complete` notification. Tap this button." +msgstr "" + +#: src/deck-picker.md:56 +msgid "AnkiDroid will appear, and show a confirmation dialog. Tap the **Add** button." +msgstr "" + +#: src/deck-picker.md:57 +msgid "When the import completes, your deck should be ready to study." +msgstr "" + +#: src/deck-picker.md:59 +msgid "Create deck" +msgstr "" + +#: src/deck-picker.md:60 +msgid "To create a new empty deck:" +msgstr "" + +#: src/deck-picker.md:61 +msgid "Tap the **+** button and choose `Create deck`" +msgstr "" + +#: src/deck-picker.md:62 +msgid "Choose a name for the deck, for example `New Japanese`" +msgstr "" + +#: src/deck-picker.md:63 +msgid "Add cards to it following the `Add` instructions above" +msgstr "" + +#: src/deck-picker.md:65 src/reviewer.md:16 +msgid "App Bar" +msgstr "" + +#: src/deck-picker.md:66 +msgid "At the top of each screen in AnkiDroid is the App Bar, with buttons for performing various actions. The following actions are available from the app bar in the deck list:" +msgstr "" + +#: src/deck-picker.md:69 +msgid "Navigation menu button" +msgstr "" + +#: src/deck-picker.md:70 +msgid "Tapping the icon on the far left will show the [left navigation menu](drawer.md#navigation-drawer) for quickly navigating between the main parts of the app." +msgstr "" + +#: src/deck-picker.md:72 +msgid "Sync button" +msgstr "" + +#: src/deck-picker.md:73 +msgid "The circular button with arrows on the right is for synchronizing your cards with the cloud, as described in the [adding decks from cloud](anki-desktop.md#using-anki-desktop-with-ankidroid) section." +msgstr "" + +#: src/deck-picker.md:75 +msgid "Overflow menu button" +msgstr "" + +#: src/deck-picker.md:76 +msgid "On the far right is the overflow menu which contains less commonly used actions. These actions are described further below." +msgstr "" + +#: src/deck-picker.md:78 +msgid "**Hint:** long tapping on a button in the app bar anywhere in the app will display a textual hint describing what the button does!" +msgstr "" + +#: src/deck-picker.md:80 +msgid "Studying a Deck" +msgstr "" + +#: src/deck-picker.md:81 +msgid "To study the cards in a deck, simply tap on the deck name (or the \"STUDY\" button on a 10\" tablet), and AnkiDroid will switch to study mode. " +msgstr "" + +#: src/deck-picker.md:83 +msgid "Note that the currently selected deck is highlighted with a grey background, and if you have any [filtered decks](filtered-deck.md#filtered-decks) they will be highlighted using a blue font. Filtered decks are discussed elsewhere in the manual." +msgstr "" + +#: src/deck-picker.md:85 +msgid "Other Deck Actions" +msgstr "" + +#: src/deck-picker.md:86 +msgid "Long tapping on a deck will show a list of other actions available to perform on that deck:" +msgstr "" + +#: src/deck-picker.md:88 +msgid "Rename deck" +msgstr "" + +#: src/deck-picker.md:89 +msgid "Use this option to rename a deck" +msgstr "" + +#: src/deck-picker.md:91 src/reviewer.md:46 +msgid "Deck options" +msgstr "" + +#: src/deck-picker.md:92 +msgid "Tapping on deck options allows you to configure various deck specific study options. Please see the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options." +msgstr "" + +#: src/deck-picker.md:95 +msgid "Custom study" +msgstr "" + +#: src/deck-picker.md:96 +msgid "Allows you to choose from some convenient presets for studying outside of your normal schedule, for example increasing the study limit for the day. See the section on [filtered decks](filtered-deck.md#filtered-decks) for more detailed information." +msgstr "" + +#: src/deck-picker.md:98 +msgid "Delete deck" +msgstr "" + +#: src/deck-picker.md:99 +msgid "Use this option to delete a deck (note: this action is not reversible, although you can [restore from a backup](backups.md#automatic-backups)" +msgstr "" + +#: src/deck-picker.md:101 +msgid "Export deck" +msgstr "" + +#: src/deck-picker.md:102 +msgid "This option can be used to share a deck with other users. See the [exporting decks](exporting.md#exporting-anki-files) section for more information." +msgstr "" + +#: src/deck-picker.md:104 src/deck-overview.md:40 +msgid "Unbury" +msgstr "" + +#: src/deck-picker.md:105 src/deck-overview.md:41 +msgid "This option is only visible when the selected deck has cards that have been manually or automatically buried." +msgstr "" + +#: src/deck-picker.md:107 +msgid "Rebuild / Empty" +msgstr "" + +#: src/deck-picker.md:108 +msgid "If the selected deck is a [filtered decks](filtered-deck.md#filtered-decks) then you also have the option to rebuild or empty the cards in it." +msgstr "" + +#: src/deck-picker.md:111 +msgid "Clickable areas on the decks" +msgstr "" + +#: src/deck-picker.md:112 +msgid "Each deck in the list has three clickable areas:" +msgstr "" + +#: src/deck-picker.md:114 +msgid "Deck expander" +msgstr "" + +#: src/deck-picker.md:115 +msgid "If you are using [subdecks](https://docs.ankiweb.net/getting-started.html#decks), then a deck expander button may appear on the far left of the deck, which can be used to show / hide the subdecks. A ▶ icon means the deck has hidden subdecks which can be shown, a ▼ icon means the deck has visible subdecks that can be hidden, and no icon means that the deck has no subdecks. " +msgstr "" + +#: src/deck-picker.md:117 +msgid "**Note:** subdecks can be created by using the naming convention `PARENT::CHILD`." +msgstr "" + +#: src/deck-picker.md:119 +msgid "Deck name" +msgstr "" + +#: src/deck-picker.md:120 +msgid "This is the main clickable area, which will take you to the study screen if there are cards available to review." +msgstr "" + +#: src/deck-picker.md:122 +msgid "Count buttons" +msgstr "" + +#: src/deck-picker.md:123 +msgid "The count buttons on the far right of each deck act as a separate clickable area that takes you to the deck overview instead of the study screen. This can be useful if you want to quickly view the number of cards available in the deck." +msgstr "" + +#: src/deck-picker.md:125 +msgid "Advanced Actions" +msgstr "" + +#: src/deck-picker.md:126 +msgid "Some additional actions are located in the overflow menu for less common tasks, which are summarized below:" +msgstr "" + +#: src/deck-picker.md:128 src/reviewer.md:19 src/gestures.md:88 +#: src/keyboard-shortcuts.md:28 +msgid "Undo" +msgstr "" + +#: src/deck-picker.md:129 +msgid "After reviewing the last card in a study session, you can undo it from here." +msgstr "" + +#: src/deck-picker.md:131 +msgid "Check database" +msgstr "" + +#: src/deck-picker.md:132 +msgid "This can automatically fix a lot of problems with your database, and will also purge any unused tags. If you experience any problems with your collection, this is the first action you should try. " +msgstr "" + +#: src/deck-picker.md:134 +msgid "**NOTE:** Under some circumstances, check database will move cards to a deck named _!Recovered Cards_. If this occurs, please move the cards to an appropriate deck via the [card browser](browser.md#findingsearchingbrowsing), and delete _!Recovered Cards_ when it is empty." +msgstr "" + +#: src/deck-picker.md:136 +msgid "Check media" +msgstr "" + +#: src/deck-picker.md:137 +msgid "Try to run this if you experience any issues with media syncing." +msgstr "" + +#: src/deck-picker.md:139 +msgid "Empty cards" +msgstr "" + +#: src/deck-picker.md:140 +msgid "Remove any empty cards from your collection. See the [desktop documentation](https://docs.ankiweb.net/templates/generation.html#card-generation--deletion) for more." +msgstr "" + +#: src/deck-picker.md:142 +msgid "Restore from backup" +msgstr "" + +#: src/deck-picker.md:143 +msgid "Allows you to restore from one of AnkiDroid's [automatic backups](backups.md#automatic-backups)" +msgstr "" + +#: src/deck-picker.md:145 +msgid "Manage note types" +msgstr "" + +#: src/deck-picker.md:146 +msgid "Allows you to add, edit, and delete note types. See the [customizing card layout](advanced-features/customizing-card-layout.md) section for more help with this advanced feature.Keyboard Shortcuts" +msgstr "" + +#: src/deck-picker.md:148 +msgid "Import" +msgstr "" + +#: src/deck-picker.md:149 +msgid "Import a .apkg anki file containing a deck. See the [importing](importing/importing-anki-files.md) section for more." +msgstr "" + +#: src/deck-picker.md:151 +msgid "Export collection" +msgstr "" + +#: src/deck-picker.md:152 +msgid "Export entire collection as a collection.apkg file. See the [exporting](exporting.md) section for more." +msgstr "" + +#: src/deck-picker.md:154 +msgid "Deck Counts" +msgstr "" + +#: src/deck-picker.md:155 +msgid "Next to each deck, three numbers are displayed. The left, blue number, corresponds to how many new cards you have to learn today. Anki will introduce 20 new cards a day by default, and you can customize this number if you'd like. The red number in the middle is for the cards due to be studied today which are currently in the learning phase, and the green number is the cards which are due for review (i.e. cards which have already graduated from the learning phase). On a deck you've never studied before, these numbers will both be zero." +msgstr "" + +#: src/deck-picker.md:157 +msgid "As explained above, tapping on the counts will take you to the deck overview screen." +msgstr "" + +#: src/drawer.md:3 +msgid "![navigation_drawer.png](img/2-navigation_drawer.png)" +msgstr "" + +#: src/drawer.md:5 +msgid "The navigation drawer can be opened from most places in the application by pressing the left menu icon, or alternatively swiping outwards from anywhere on the far left side of the screen. It is used for quickly navigating between different parts of the application. You can switch to the following screens:" +msgstr "" + +#: src/drawer.md:9 +msgid "Decks" +msgstr "" + +#: src/drawer.md:10 +msgid "Takes you to the top level of the app where the list of cards are shown ([more info here](deck-picker.md))" +msgstr "" + +#: src/drawer.md:12 src/keyboard-shortcuts.md:8 src/keyboard-shortcuts.md:51 +msgid "Card Browser" +msgstr "" + +#: src/drawer.md:13 +msgid "Shows a list of all your cards ([more info here](browser.md))" +msgstr "" + +#: src/drawer.md:15 +msgid "Statistics" +msgstr "" + +#: src/drawer.md:16 +msgid "Helps you track your study progress ([more info in Anki manual](https://docs.ankiweb.net/stats.html#statistics) and [here](advanced-features/advanced-statistics.md))" +msgstr "" + +#: src/drawer.md:18 +msgid "Night mode" +msgstr "" + +#: src/drawer.md:19 +msgid "This switches the app to a dark theme which many users find is less straining on the eyes, particularly when reviewing in the dark. See the " +msgstr "" + +#: src/drawer.md:19 +msgid "wiki" +msgstr "" + +#: src/drawer.md:19 +msgid " for instructions on how to customize the card background and font color used in night mode." +msgstr "" + +#: src/drawer.md:21 +msgid "Settings" +msgstr "" + +#: src/drawer.md:22 +msgid "Allows you to customize the app ([more info here](settings.md))" +msgstr "" + +#: src/drawer.md:24 +msgid "Help" +msgstr "" + +#: src/drawer.md:25 +msgid "Opens this web page" +msgstr "" + +#: src/drawer.md:27 +msgid "Send feedback" +msgstr "" + +#: src/drawer.md:28 +msgid "Get support from the AnkiDroid team" +msgstr "" + +#: src/deck-overview.md:3 +msgid "[App bar](#app-bar)" +msgstr "" + +#: src/deck-overview.md:4 +msgid "[Ordinary decks](#ordinary-decks)" +msgstr "" + +#: src/deck-overview.md:5 +msgid "[Custom Study](#custom-study)" +msgstr "" + +#: src/deck-overview.md:6 +msgid "[Filtered decks](#filtered-decks)" +msgstr "" + +#: src/deck-overview.md:7 +msgid "[Empty deck](#empty-deck)" +msgstr "" + +#: src/deck-overview.md:8 +msgid "[Rebuild deck](#rebuild-deck)" +msgstr "" + +#: src/deck-overview.md:9 +msgid "[Overflow menu](#overflow-menu)" +msgstr "" + +#: src/deck-overview.md:10 +msgid "[Deck Options](#deck-options)" +msgstr "" + +#: src/deck-overview.md:13 +msgid "![deck_overview.png](img/3-deck_overview.png)" +msgstr "" + +#: src/deck-overview.md:15 +msgid "From the deck list, if you tap the counts area you will be taken to the deck overview screen. On tablets it is always shown in the area to the right of the deck list." +msgstr "" + +#: src/deck-overview.md:17 +msgid "On this screen you can view a summary of the deck, build custom study sessions, rebuild / empty filtered decks, and change deck options. When visible, pressing the study button will take you to the study screen for that deck." +msgstr "" + +#: src/deck-overview.md:19 +msgid "App bar" +msgstr "" + +#: src/deck-overview.md:20 +msgid "The icons that are shown in the app bar depend on whether your deck is an ordinary deck or a filtered deck." +msgstr "" + +#: src/deck-overview.md:22 +msgid "Ordinary decks" +msgstr "" + +#: src/deck-overview.md:24 +msgid "Custom Study" +msgstr "" + +#: src/deck-overview.md:25 +msgid "Tapping the wrench icon allows you to create a custom session, for example to do extra reviews outside your normal schedule, or study only certain cards inside a deck. See the [filtered deck section](filtered-deck.md) for more information on this." +msgstr "" + +#: src/deck-overview.md:27 +msgid "Filtered decks" +msgstr "" + +#: src/deck-overview.md:29 +msgid "Empty deck" +msgstr "" + +#: src/deck-overview.md:30 +msgid "Tapping the cross icon will empty all of the cards in the current filtered deck (i.e. return them to their original deck)." +msgstr "" + +#: src/deck-overview.md:32 +msgid "Rebuild deck" +msgstr "" + +#: src/deck-overview.md:33 +msgid "Tapping the rebuild icon will rebuild the current filtered deck according to the settings specified in filtered deck options." +msgstr "" + +#: src/deck-overview.md:35 +msgid "Overflow menu" +msgstr "" + +#: src/deck-overview.md:37 +msgid "Deck Options" +msgstr "" + +#: src/deck-overview.md:38 +msgid "Allows you to configure some options related to the current deck, such as the number of new cards and reviews to introduce each day. Please see the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options." +msgstr "" + +#: src/reviewer.md:3 +msgid "Tapping on the deck name from the deck list, or the study button from the deck overview screen will take you to the study screen where you do your study. " +msgstr "" + +#: src/reviewer.md:5 +msgid "![reviewer.png](img/4-reviewer.png)" +msgstr "" + +#: src/reviewer.md:7 +msgid "Basics" +msgstr "" + +#: src/reviewer.md:8 +msgid "If you have not used Anki on a computer before, you may like to have a look at the first [intro video](https://docs.ankiweb.net/getting-started.html#videos) before reading on, as it explains the basic review process." +msgstr "" + +#: src/reviewer.md:10 +msgid "On the top left of the screen you'll see three numbers. From the left, these correspond to new cards, learning cards, and cards to review. These are explained in more detail in the intro videos for the desktop program, so please [check them out](https://docs.ankiweb.net/getting-started.html#videos) if you haven't already." +msgstr "" + +#: src/reviewer.md:12 +msgid "When you've looked at a card's question and remembered the answer, or decided you don't know it, tap the **show answer** button. When you do, the bottom area will change to display 2-4 answer buttons, depending on how you've answered the card previously. The buttons will display the time a card will next be shown, so 10m means **10 minutes** and **5d** means **5 days**. You can tap directly on these buttons to choose a particular answer. " +msgstr "" + +#: src/reviewer.md:14 +msgid "To make reviewing faster, you can configure gestures (for example taps and swipes) to answer cards without using the buttons. See the [preferences section](settings.md) for more information on configuring gestures." +msgstr "" + +#: src/reviewer.md:17 +msgid "The App Bar at the top of the study screen has several buttons for performing various common actions. The number of buttons which are shown is determined automatically by Android based on the size and resolution of your screen. If there is not enough space to show the button for a given action, then the action will be available from the menu instead. If you are unsure what a button does, you can long-tap on it to see the name of the action. The following action are available:" +msgstr "" + +#: src/reviewer.md:20 +msgid "Undo the answer you chose for the last card you studied (button always shown)." +msgstr "" + +#: src/reviewer.md:22 +msgid "Mark Card" +msgstr "" + +#: src/reviewer.md:23 +msgid "Adds a **marked** tag to the current note, so it can be easily found in the browser. This is useful when you want to take some action on the note at a later date, such as looking up a word when you get home. Marked cards also show a small star in the upper-right-hand corner during reviews." +msgstr "" + +#: src/reviewer.md:26 +msgid "Flag Card" +msgstr "" + +#: src/reviewer.md:27 +msgid "Adds a color coded **flag** (red, orange, green, or blue) This can be used as a general purpose indicator to differentiate your cards. Flags are represented by a number from 1-4, corresponding to the previously listed colors." +msgstr "" + +#: src/reviewer.md:30 +msgid "Edit Card" +msgstr "" + +#: src/reviewer.md:31 +msgid "Open the edit note screen, where you can change the content displayed on the flashcard (see the [editing notes section](editing-notes.md) for more help)" +msgstr "" + +#: src/reviewer.md:33 +msgid "Hide / Delete" +msgstr "" + +#: src/reviewer.md:34 +msgid "Give options to bury, suspend, or delete the current note or card" +msgstr "" + +#: src/reviewer.md:36 +msgid "**Bury card / Bury note:** Hides a card or all of the note’s cards from review until the next day. (If you want to unbury cards before then, you can choose “unbury” from the long-press menu in the [deck list](deck-picker.md), or from the [deck overview screen](deck-overview.md).) This is useful if you cannot answer the card at the moment or you want to come back to it another time. Burying can also happen automatically for cards of the same note. If cards were in learning when they are buried, they are moved back to the new card queue or review queue prior to being buried." +msgstr "" + +#: src/reviewer.md:37 +msgid "**Suspend card / Suspend note:** Hides a card or all of the note’s cards from review until they are manually unsuspended (by long-tapping a card in the [card browser](browser.md)). This is useful if you want to avoid reviewing the note for some time, but don’t want to delete it. If cards were in learning when they are suspended, they are moved back to the new card queue or review queue prior to being suspended." +msgstr "" + +#: src/reviewer.md:38 +msgid "**Delete note:** Deletes the note and all of its cards." +msgstr "" + +#: src/reviewer.md:40 +msgid "Replay Audio" +msgstr "" + +#: src/reviewer.md:41 +msgid "If the card has audio on the front or back, it will be played again." +msgstr "" + +#: src/reviewer.md:43 +msgid "Enable / Disable Whiteboard" +msgstr "" + +#: src/reviewer.md:44 +msgid "This action enables or disables the whiteboard feature for the current deck. The whiteboard feature allows you to draw on the screen, which is particularly useful for practicing drawing characters from languages such as Japanese. When the whiteboard has been enabled for the current deck, two new actions will become available for clearing and hiding the whiteboard. Disabling the whiteboard will hide these actions as well as the whiteboard itself." +msgstr "" + +#: src/reviewer.md:47 +msgid "Open the deck specific study options. See the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options." +msgstr "" + +#: src/reviewer.md:49 +msgid "Check Pronunciation" +msgstr "" + +#: src/reviewer.md:50 +msgid "This action enables or disables the temporary audio recorder toolbar at the top of the card. This feature allows you to record your voice and replay it. It is used primarily to check your pronunciation. This toolbar is composed of three buttons: play, stop playing and record microphone audio. This tool can be used while viewing either the question or the answer." +msgstr "" + +#: src/reviewer.md:52 +msgid "Reaching the end of the study session" +msgstr "" + +#: src/reviewer.md:53 +msgid "When you've finished the cards that are due to be studied today, you'll be taken back to the decks list and shown a congratulations message. From here you can select a different deck, or if you've finished studying for the day, you can simply tap the home button in order to close AnkiDroid (and you can also do this in the middle of reviews if you wish)." +msgstr "" + +#: src/reviewer.md:55 +msgid "If you wish to keep studying the same deck further, tap on the deck again which will give you several options for continued study. Please see the [filtered deck](filtered-deck.md) section for more on custom study." +msgstr "" + +#: src/adding-notes.md:3 +msgid "[Type](#type)" +msgstr "" + +#: src/adding-notes.md:4 +msgid "[Deck](#deck)" +msgstr "" + +#: src/adding-notes.md:5 +msgid "[Fields](#fields)" +msgstr "" + +#: src/adding-notes.md:6 +msgid "[Media Buttons](#media-buttons)" +msgstr "" + +#: src/adding-notes.md:7 +msgid "[Tags](#tags)" +msgstr "" + +#: src/adding-notes.md:8 +msgid "[Cards](#cards)" +msgstr "" + +#: src/adding-notes.md:10 +msgid "__Note:__ _This section onwards assumes you understand what [notes, fields, card templates, and note types](https://docs.ankiweb.net/getting-started.html#notes--fields) are_" +msgstr "" + +#: src/adding-notes.md:12 +msgid "To add a new note, tap the **+** button at the bottom of the deck list and choose **Add**." +msgstr "" + +#: src/adding-notes.md:14 +msgid "![adding.png](img/5-adding.png)" +msgstr "" + +#: src/adding-notes.md:16 +msgid "The following controls are available in the add note screen:" +msgstr "" + +#: src/adding-notes.md:18 +msgid "Type" +msgstr "" + +#: src/adding-notes.md:19 +msgid "Allows you to select the type of note you'd like to add. For most purposes the **Basic** note type is sufficient, but for example if you would like an extra card generated which is the reverse of the main card (i.e. shows the **Back** field on the front of the card), you could chose the **Basic (and reversed card)** note type." +msgstr "" + +#: src/adding-notes.md:22 +msgid "Deck" +msgstr "" + +#: src/adding-notes.md:23 +msgid "Allows you to change the deck the generated card/cards will be added to." +msgstr "" + +#: src/adding-notes.md:25 +msgid "Fields" +msgstr "" + +#: src/adding-notes.md:26 +msgid "Below the deck selector are the fields for the note (for example the **Basic** note type has two fields **Front** and **Back**). When you tap on a field, a keyboard will come up, allowing you to type in information." +msgstr "" + +#: src/adding-notes.md:28 +msgid "Media Buttons" +msgstr "" + +#: src/adding-notes.md:29 +msgid "Next to each field is an attach icon, which allows you to add media to your note (this feature is currently in the experimental phase). \n" +"Add image lets you add images either via your device's camera (if it has one), or from your photo library. Record audio allows you to record your voice and place it into a field. The advanced editor lets you automatically search for translations or pronunciation audio files online." +msgstr "" + +#: src/adding-notes.md:33 +msgid "Tags" +msgstr "" + +#: src/adding-notes.md:34 +msgid "Brings up a dialog which lets you add / remove tags from the note." +msgstr "" + +#: src/adding-notes.md:36 +msgid "Cards" +msgstr "" + +#: src/adding-notes.md:37 +msgid "Shows the names of the cards which will be generated for the selected note type. Tapping on this button will bring up a dialog which lets you preview the source code for the card template of the selected note type. From here you can edit, preview, add, and delete card templates. See the [cards and templates section](https://docs.ankiweb.net/templates/intro.html) of the Anki Desktop manual for more information about card templates." +msgstr "" + +#: src/adding-notes.md:39 +msgid "Long press in a text entry field to add a cloze deletion around the selected text, or an empty cloze deletion if there is no selected text." +msgstr "" + +#: src/adding-notes.md:41 +msgid "When you've finished typing in the content of a note, tap the tick icon in the app bar at the top to add it to your collection. Alternatively, if you want to go back to what you were doing without saving, you can tap the app icon, or use the hardware back button." +msgstr "" + +#: src/editing-notes.md:2 +msgid "The edit note screen can be opened by choosing edit while reviewing, or by opening a card in the browser. The edit screen is similar to the add new note screen mentioned above, with some key differences:" +msgstr "" + +#: src/editing-notes.md:5 +msgid "Changing the deck operates on the selected card (which is underlined in the **Cards** box). If a note type is chosen which has more than one card, only the currently selected card will be moved to the new deck." +msgstr "" + +#: src/editing-notes.md:8 +msgid "Changing the **Type** dropdown selector changes to the note type edit mode. In this mode, editing the content of the note (i.e. deck, fields, etc) is disabled, and if a custom note type with more than two fields is being used, additional buttons will appear which let you control the mapping of the fields to the new note type." +msgstr "" + +#: src/editing-notes.md:11 +msgid "If a note type is selected which has less cards than the original note type, only the first n cards will be kept. For example changing from **Basic (and reversed card)** to **Basic** will lead to only the first card being kept. To warn you of this, the text in the **Cards** box will appear red, and a confirmation dialog will be shown before the note is saved." +msgstr "" + +#: src/editing-notes.md:14 +msgid "Hint: to change the type for multiple notes in one go, or to customize the mapping between cards, use the **Change note type** option in the browser on Anki Desktop." +msgstr "" + +#: src/editing-notes.md:16 +msgid "There are also several advanced options available in the main menu:" +msgstr "" + +#: src/editing-notes.md:18 +msgid "Add note" +msgstr "" + +#: src/editing-notes.md:19 +msgid "Create a new empty note" +msgstr "" + +#: src/editing-notes.md:21 +msgid "Copy card" +msgstr "" + +#: src/editing-notes.md:22 +msgid "Copy the current note to a new editable note" +msgstr "" + +#: src/editing-notes.md:24 +msgid "Reset progress" +msgstr "" + +#: src/editing-notes.md:25 +msgid "Move the card to the end of the new card queue. The current state of the card is cleared, but not its revision history." +msgstr "" + +#: src/editing-notes.md:27 src/keyboard-shortcuts.md:59 +msgid "Reschedule" +msgstr "" + +#: src/editing-notes.md:28 +msgid "Allows you to reschedule as a review card on a given date. This is useful if you have imported already-learnt material, and you want to start it off with higher initial intervals." +msgstr "" + +#: src/browser.md:9 +msgid "[Searching](#searching)" +msgstr "" + +#: src/browser.md:10 +msgid "[tag:marked](#tagmarked)" +msgstr "" + +#: src/browser.md:11 +msgid "[is:due](#isdue)" +msgstr "" + +#: src/browser.md:12 +msgid "[front:rabbit](#frontrabbit)" +msgstr "" + +#: src/browser.md:13 +msgid "[flag:1](#flag1)" +msgstr "" + +#: src/browser.md:15 +msgid "You can search for or browse cards by tapping the **Card browser** button from the [navigation drawer](drawer.md)." +msgstr "" + +#: src/browser.md:17 +msgid "![img/6-browser.png](img/6-browser.png)" +msgstr "" + +#: src/browser.md:19 +msgid "The browser screen starts by displaying all the cards in the currently selected deck. You can search for cards in the selected deck by tapping the magnifying glass icon in the top. You can change the selected deck (or change to all decks) by choosing the deck from the dropdown list on the top left." +msgstr "" + +#: src/browser.md:21 +msgid "By default, the first column in the browser gives the text which will be shown on the question (i.e. front side) of the flashcard, and the second column shows the text from the answer (i.e. the back side) of the flashcard. " +msgstr "" + +#: src/browser.md:23 +msgid "The first column can also be configured to show the [sort field](https://docs.ankiweb.net/editing.html#customizing-fields) for a more compact display. The second column can be configured to show many different parameters by tapping the drop down menu in the column heading. " +msgstr "" + +#: src/browser.md:25 +msgid "Note that the content of the columns is dynamically calculated as your scroll through the list of the cards." +msgstr "" + +#: src/browser.md:27 +msgid "From the search results, you can tap on a card to edit it (see the [edit note section](editing-notes.md) above), or long-tapping on it will show a menu allowing you to perform the following actions:" +msgstr "" + +#: src/browser.md:29 +msgid "Mark / unmark note" +msgstr "" + +#: src/browser.md:30 +msgid "Add / remove the **marked** tag from the note. Cards with a marked note are highlighted in purple." +msgstr "" + +#: src/browser.md:32 +msgid "Flag card" +msgstr "" + +#: src/browser.md:33 +msgid "Change or remove the color coded **flag** on the card. Cards with a flag are highlighted in the flags color." +msgstr "" + +#: src/browser.md:35 +msgid "Suspend / unsuspend card" +msgstr "" + +#: src/browser.md:36 +msgid "Suspended cards are highlighted in yellow, and are not shown during review." +msgstr "" + +#: src/browser.md:38 src/gestures.md:107 +msgid "Delete note" +msgstr "" + +#: src/browser.md:39 +msgid "Delete the note of the currently selected card, and all cards belonging to that note. This action cannot be undone without [restoring from backup](backups.md)." +msgstr "" + +#: src/browser.md:41 +msgid "Preview" +msgstr "" + +#: src/browser.md:42 +msgid "Render the currently selected card so that you can see what it looks like in the reviewer." +msgstr "" + +#: src/browser.md:44 +msgid "Select multiple cards" +msgstr "" + +#: src/browser.md:45 +msgid "Long-tapping on a single card will select the single card. While that card is selected, if you long-tap on another card on your screen, then all of the cards between the first selected card and the last card will be selected. This allows for actions to be performed on multiple cards at once." +msgstr "" + +#: src/browser.md:47 +msgid "Searching" +msgstr "" + +#: src/browser.md:48 +msgid "AnkiDroid supports all the search strings that the desktop version of Anki does, allowing you to perform quite complex searches. Some examples:" +msgstr "" + +#: src/browser.md:50 +msgid "tag:marked" +msgstr "" + +#: src/browser.md:51 +msgid "show cards that with the tag **marked**" +msgstr "" + +#: src/browser.md:53 +msgid "is:due" +msgstr "" + +#: src/browser.md:54 +msgid "show only cards that are waiting for review" +msgstr "" + +#: src/browser.md:56 +msgid "front:rabbit" +msgstr "" + +#: src/browser.md:57 +msgid "show only cards where the front field is exactly **rabbit** " +msgstr "" + +#: src/browser.md:59 +msgid "flag:1" +msgstr "" + +#: src/browser.md:60 +msgid "show only cards marked with a red flag" +msgstr "" + +#: src/browser.md:62 +msgid "For a full list of the possibilities, please see the section in the [desktop manual](https://docs.ankiweb.net/searching.html)." +msgstr "" + +#: src/browser.md:64 +msgid "Alternatively, some more commonly used filters (marked, suspended, and tagged cards) can be quickly applied without manually typing them by choosing them from the overflow menu. You can also save and recall common search queries from the menu." +msgstr "" + +#: src/filtered-deck.md:3 +msgid "Anki is designed to optimize the learning process, so that you study the minimum amount necessary to remember the majority of your cards. Once the congratulations screen is reached, further study becomes a case of diminishing returns: the amount of extra time spent going over the same cards again is generally not worth the moderate increase in retention you'll see." +msgstr "" + +#: src/filtered-deck.md:5 +msgid "That said, if you have a test looming, or simply want to pass some time, it's possible to keep reviewing even after you are shown the congratulations message." +msgstr "" + +#: src/filtered-deck.md:7 +msgid "A **filtered deck** is a temporary deck that contains cards based on various criteria, such as **forgotten today**, `is tagged 'hard'`, and so on. After studying cards in a filtered deck, or when the filtered deck is deleted, the cards are automatically returned to their original deck." +msgstr "" + +#: src/filtered-deck.md:9 +msgid "The easiest way to create a filtered deck is by long clicking on a deck and choosing the **custom study** option. " +msgstr "" + +#: src/filtered-deck.md:11 +msgid "Advanced users can create a filtered deck manually, by choosing **Create filtered deck** from the overflow menu in the deck list screen." +msgstr "" + +#: src/filtered-deck.md:13 +msgid "For further information on filtered decks, please see the [desktop documentation](https://docs.ankiweb.net/filtered-decks.html#filtered-decks--cramming)." +msgstr "" + +#: src/importing/importing-anki-files.md:3 +msgid "You can import Anki files (with .apkg file format) directly into AnkiDroid. Other file formats cannot be imported directly into AnkiDroid, however flashcards from most other applications can be imported into Anki Desktop on your computer, which can then be [added into AnkiDroid in the usual way](../anki-desktop.md). See the [importing section of the Anki Desktop manual](https://docs.ankiweb.net/importing/intro.html) for help on importing into Anki Desktop." +msgstr "" + +#: src/importing/importing-anki-files.md:6 +msgid "As in Anki Desktop, AnkiDroid distinguishes between [the two types of .apkg files](https://docs.ankiweb.net/exporting.html) (**collection package** and **deck package**) based on the filename. Collection packages have the name **collection.colpkg**, and when imported will completely _replace all contents_ in AnkiDroid. Any apkg file which is **_not_** named something that ends in **.colpkg** will be treated as a deck package, which will be _merged with any existing content_ when imported into to AnkiDroid." +msgstr "" + +#: src/importing/importing-anki-files.md:8 +msgid "You can import .apkg Anki collection files into AnkiDroid either by opening them using the standard Android system, or by manually importing them from within AnkiDroid:" +msgstr "" + +#: src/importing/importing-anki-files.md:10 +msgid "Open the file using Android" +msgstr "" + +#: src/importing/importing-anki-files.md:11 +msgid "Apkg files are automatically associated with AnkiDroid, so for example if you open a .apkg email attachment which you sent to yourself, then AnkiDroid will automatically open the file and confirm if you want to import it. Simply click OK and the apkg file will be imported." +msgstr "" + +#: src/importing/importing-anki-files.md:13 +msgid "Import the file manually in AnkiDroid" +msgstr "" + +#: src/importing/importing-anki-files.md:14 +msgid "You can also manually import .apkg files as follows:" +msgstr "" + +#: src/importing/importing-anki-files.md:16 +msgid "Connect your device to your computer using USB" +msgstr "" + +#: src/importing/importing-anki-files.md:17 +msgid "Copy the .apkg from your computer to the AnkiDroid folder on your device" +msgstr "" + +#: src/importing/importing-anki-files.md:18 +msgid "Open AnkiDroid on your device" +msgstr "" + +#: src/importing/importing-anki-files.md:19 +msgid "From the main menu in the deck list, choose _Import_" +msgstr "" + +#: src/importing/importing-anki-files.md:20 +msgid "Choose the apkg file you just copied to your device when prompted" +msgstr "" + +#: src/importing/importing-anki-files.md:21 +msgid "Tap OK" +msgstr "" + +#: src/importing/importing-anki-databases.md:3 +msgid "AnkiDroid does not support directly importing Anki database (`.anki2`) files. A database import will replace your collection with the contents the provided file. If you want to perform a full replacement, you should import a `collection[.apkg/.colpkg]` created in the app with the export function." +msgstr "" + +#: src/importing/importing-anki-databases.md:5 +msgid "Importing anki2 files manually" +msgstr "" + +#: src/importing/importing-anki-databases.md:7 +msgid "This is not officially supported, but `.anki2` files can manually be imported if needed, in cases of troubleshooting for example:" +msgstr "" + +#: src/importing/importing-anki-databases.md:9 +msgid "Create a new folder on your Android file system" +msgstr "" + +#: src/importing/importing-anki-databases.md:10 +msgid "Obtain the full path to the folder as provided by your file manager, this will typically appear as: `/storage/emulated/0/`" +msgstr "" + +#: src/importing/importing-anki-databases.md:11 +msgid "Place the `.anki2` file in the newly created folder" +msgstr "" + +#: src/importing/importing-anki-databases.md:12 +msgid "Rename the file to `collection.anki2`" +msgstr "" + +#: src/importing/importing-anki-databases.md:13 +msgid "(If applicable) Temporarily log out of your AnkiWeb account: `Settings - AnkiDroid - AnkiWeb account`" +msgstr "" + +#: src/importing/importing-anki-databases.md:14 +msgid "Open `Settings - Advanced - AnkiDroid Directory` and set the AnkiDroid Directory to the newly created folder." +msgstr "" + +#: src/exporting.md:3 +msgid "AnkiDroid can export your flashcards in the .apkg Anki file format so that you can import them into Anki Desktop, or share them with other people. As in Anki Desktop, you can either export a [collection package or deck package](https://docs.ankiweb.net/exporting.html#packaged-decks), depending on what you are trying to achieve." +msgstr "" + +#: src/exporting.md:6 +msgid "There are two export options available: **include scheduling information** and **include media**. Generally the default options are sufficient, if you choose not to include scheduling information, Anki will assume that you are sharing the deck with other people, and will remove marked and leech tags so that they will have a clean copy of it." +msgstr "" + +#: src/exporting.md:8 +msgid "Exporting collection package" +msgstr "" + +#: src/exporting.md:9 +msgid "When exporting for use in Anki Desktop, you generally want to [export your entire collection](https://docs.ankiweb.net/exporting.html#collection-colpkg), including all your review history etc. " +msgstr "" + +#: src/exporting.md:11 src/exporting.md:28 +msgid "From the main menu in the decks screen:" +msgstr "" + +#: src/exporting.md:13 +msgid "Tap the **Export** item in the menu." +msgstr "" + +#: src/exporting.md:14 +msgid "Tap **OK** using default options" +msgstr "" + +#: src/exporting.md:15 +msgid "Tap **OK** again to email the exported collection.apkg file to yourself, or alternatively you can manually copy to your computer using USB" +msgstr "" + +#: src/exporting.md:17 +msgid "To import the file on your computer:" +msgstr "" + +#: src/exporting.md:19 +msgid "Save the file **collection.apkg** to your desktop" +msgstr "" + +#: src/exporting.md:20 +msgid "Double-click on the file to start Anki." +msgstr "" + +#: src/exporting.md:21 +msgid "Confirm you wish to replace, so that the deck from your mobile device overwrites the old data on your desktop." +msgstr "" + +#: src/exporting.md:23 +msgid "After importing, you can delete the apkg file on your desktop if you wish." +msgstr "" + +#: src/exporting.md:25 +msgid "Exporting deck package" +msgstr "" + +#: src/exporting.md:26 +msgid "If you want to share a deck in AnkiDroid with another user, you can export a deck package. " +msgstr "" + +#: src/exporting.md:30 +msgid "Long tap on the deck you wish to export" +msgstr "" + +#: src/exporting.md:31 +msgid "Tap **Export**" +msgstr "" + +#: src/exporting.md:32 +msgid "Tap **OK** using the default options" +msgstr "" + +#: src/exporting.md:33 +msgid "Tap **OK** again to email the exported apkg to another user" +msgstr "" + +#: src/backups.md:3 +msgid "AnkiDroid will automatically create backups of your collection for you. The backups include all your cards and statistics, but do not include sounds or images." +msgstr "" + +#: src/backups.md:5 +msgid "The backup is taken in the background when you first start the app. A backup will only happen if more than 5 hours has elapsed since the last time a backup was created. By default, AnkiDroid will store the last 8 backups; this number can be changed in the main settings." +msgstr "" + +#: src/backups.md:8 +msgid "You can restore a backup by choosing the _restore from backup_ option from the main menu of the [decks screen](deck-picker.md)." +msgstr "" + +#: src/settings.md:3 +msgid "[AnkiDroid](#ankidroid)" +msgstr "" + +#: src/settings.md:4 +msgid "[AnkiWeb account](#ankiweb-account)" +msgstr "" + +#: src/settings.md:5 +msgid "[Fetch media on sync](#fetch-media-on-sync)" +msgstr "" + +#: src/settings.md:6 +msgid "[Automatic synchronization](#automatic-synchronization)" +msgstr "" + +#: src/settings.md:7 +msgid "[Deck for new cards](#deck-for-new-cards)" +msgstr "" + +#: src/settings.md:8 +msgid "[Language](#language)" +msgstr "" + +#: src/settings.md:9 +msgid "[Error reporting mode](#error-reporting-mode)" +msgstr "" + +#: src/settings.md:10 +msgid "[Notifications](#notifications)" +msgstr "" + +#: src/settings.md:11 +msgid "[Notify when](#notify-when)" +msgstr "" + +#: src/settings.md:12 +msgid "[Vibrate](#vibrate)" +msgstr "" + +#: src/settings.md:13 +msgid "[Blink light](#blink-light)" +msgstr "" + +#: src/settings.md:14 +msgid "[Reviewing](#reviewing)" +msgstr "" + +#: src/settings.md:15 +msgid "[New card position](#new-card-position)" +msgstr "" + +#: src/settings.md:16 +msgid "[Start of next day](#start-of-next-day)" +msgstr "" + +#: src/settings.md:17 +msgid "[Learn ahead limit](#learn-ahead-limit)" +msgstr "" + +#: src/settings.md:18 +msgid "[Timebox limit](#timebox-limit)" +msgstr "" + +#: src/settings.md:19 +msgid "[Display](#display)" +msgstr "" + +#: src/settings.md:20 +msgid "[Keep screen on](#keep-screen-on)" +msgstr "" + +#: src/settings.md:21 +msgid "[Fullscreen mode](#fullscreen-mode)" +msgstr "" + +#: src/settings.md:22 +msgid "[Center align](#center-align)" +msgstr "" + +#: src/settings.md:23 +msgid "[Show button time](#show-button-time)" +msgstr "" + +#: src/settings.md:24 +msgid "[Card zoom](#card-zoom)" +msgstr "" + +#: src/settings.md:25 +msgid "[Image zoom](#image-zoom)" +msgstr "" + +#: src/settings.md:26 +msgid "[Answer button size](#answer-button-size)" +msgstr "" + +#: src/settings.md:27 +msgid "[Show remaining](#show-remaining)" +msgstr "" + +#: src/settings.md:28 +msgid "[Whiteboard](#whiteboard)" +msgstr "" + +#: src/settings.md:29 +msgid "[Stroke width](#stroke-width)" +msgstr "" + +#: src/settings.md:30 +msgid "[Black strokes](#black-strokes)" +msgstr "" + +#: src/settings.md:31 +msgid "[Automatic display answer](#automatic-display-answer)" +msgstr "" + +#: src/settings.md:32 +msgid "[Time to show answer](#time-to-show-answer)" +msgstr "" + +#: src/settings.md:33 +msgid "[Time to show next question](#time-to-show-next-question)" +msgstr "" + +#: src/settings.md:34 +msgid "[Fonts](#fonts)" +msgstr "" + +#: src/settings.md:35 +msgid "[Default font](#default-font)" +msgstr "" + +#: src/settings.md:36 +msgid "[Default font applicability](#default-font-applicability)" +msgstr "" + +#: src/settings.md:37 +msgid "[Browser and editor font](#browser-and-editor-font)" +msgstr "" + +#: src/settings.md:38 +msgid "[Card browser font scaling](#card-browser-font-scaling)" +msgstr "" + +#: src/settings.md:40 +msgid "The preferences screen can be accessed by opening the navigation drawer, and choosing **Settings**. It allows you to customize various application settings and how AnkiDroid appears." +msgstr "" + +#: src/settings.md:42 +msgid "The Preferences screen is divided up into different sections, which are covered below." +msgstr "" + +#: src/settings.md:44 +msgid "AnkiDroid" +msgstr "" + +#: src/settings.md:45 +msgid "These are the general settings which affect the whole app:" +msgstr "" + +#: src/settings.md:47 +msgid "AnkiWeb account" +msgstr "" + +#: src/settings.md:48 +msgid "Change the account used for syncing with the cloud. For more information on syncing, please see [this section](anki-desktop.md)." +msgstr "" + +#: src/settings.md:50 +msgid "Fetch media on sync" +msgstr "" + +#: src/settings.md:51 +msgid "By default, AnkiDroid will sync sounds and images as well as your cards and review history. If you disable this option, sounds and images will not be downloaded from or uploaded to the sync server by AnkiDroid." +msgstr "" + +#: src/settings.md:54 +msgid "Automatic synchronization" +msgstr "" + +#: src/settings.md:55 +msgid "Enable this option if you want AnkiDroid to sync every time you open and close the app. There is a limit of once every ten minutes for this behavior. Once a sync begins you can cancel it by pressing your device's back button, however it can take some time for the cancellation to take effect." +msgstr "" + +#: src/settings.md:57 +msgid "Users that want more fine-grained control over when sync occurred might like to use a 3rd party app like Tasker to automate synchronization. See the " +msgstr "" + +#: src/settings.md:57 +msgid "API documentation" +msgstr "" + +#: src/settings.md:57 +msgid " for more information on this." +msgstr "" + +#: src/settings.md:59 +msgid "Deck for new cards" +msgstr "" + +#: src/settings.md:60 +msgid "The default of **Use current deck** means that Anki saves the last-used note type for each deck and selects it again then next time you choose the deck (and, in addition, will start with the current deck selected when choosing Add from anywhere). The other option, **Decide by note type,** saves the last-used deck for each note type (and opens the add window to the last-used note type when you choose Add). This may be more convenient if you always use a single note type for each deck." +msgstr "" + +#: src/settings.md:62 +msgid "Language" +msgstr "" + +#: src/settings.md:63 +msgid "Change the language. Note: AnkiDroid translations are contributed by volunteers. If you find missing or incorrect translations, feel free to contribute to the translation project. More details can be found on the " +msgstr "" + +#: src/settings.md:63 +msgid "AnkiDroid Wiki" +msgstr "" + +#: src/settings.md:63 src/advanced-features/custom-fonts.md:15 +msgid "." +msgstr "" + +#: src/settings.md:65 +msgid "Error reporting mode" +msgstr "" + +#: src/settings.md:66 +msgid "Control whether or not AnkiDroid asks your permission before sending error reports to our error reporting system when AnkiDroid crashes. You can also disable the reporting feature entirely if you wish." +msgstr "" + +#: src/settings.md:68 +msgid "Notifications" +msgstr "" + +#: src/settings.md:69 +msgid "This subsection allows you configure when and how AnkiDroid shows alerts in the Android notification bar." +msgstr "" + +#: src/settings.md:71 +msgid "Notify when" +msgstr "" + +#: src/settings.md:72 +msgid "**Never notify** will disable all notifications from AnkiDroid. **Pending messages available** will only show important status updates like when a sync completed. **More than n cards due** will show a notification when you have more than n cards due (requires the widget to be enabled)." +msgstr "" + +#: src/settings.md:74 +msgid "Vibrate" +msgstr "" + +#: src/settings.md:75 +msgid "Checking this will make your device vibrate when showing a notification" +msgstr "" + +#: src/settings.md:77 +msgid "Blink light" +msgstr "" + +#: src/settings.md:78 +msgid "Checking this will make your device light blink when an unread notification exists (if your device has a notification LED)" +msgstr "" + +#: src/settings.md:81 +msgid "Reviewing" +msgstr "" + +#: src/settings.md:83 +msgid "The reviewing screen allows you to customize how AnkiDroid behaves when you're reviewing cards. Note that only the reviewing settings which are applied to **all decks** are shown here. There are more settings related to reviewing which are **deck specific**. These deck specific settings are located in **Deck options**." +msgstr "" + +#: src/settings.md:86 +msgid "New card position" +msgstr "" + +#: src/settings.md:87 +msgid "Controls when new cards are shown: either mixed with, after, or before all reviews." +msgstr "" + +#: src/settings.md:89 +msgid "Start of next day" +msgstr "" + +#: src/settings.md:90 +msgid "Controls when AnkiDroid should start showing the next day's cards. The default setting of 4AM ensures that if you're studying around midnight, you won't have two days worth of cards shown to you in one session. If you stay up very late or wake up very early, you may want to adjust this to a time you're usually sleeping." +msgstr "" + +#: src/settings.md:93 +msgid "Learn ahead limit" +msgstr "" + +#: src/settings.md:94 +msgid "The Learn ahead limit tells AnkiDroid how to behave when there is nothing left to study in the current deck but cards in learning. The default setting of 20 minutes tells AnkiDroid that cards should be shown early if they are due to be shown in less than 20 minutes and there's nothing else to do. If you set this to 0, Anki will always wait the full period, showing the congratulations screen until the remaining cards are ready to be reviewed." +msgstr "" + +#: src/settings.md:96 +msgid "Timebox limit" +msgstr "" + +#: src/settings.md:97 +msgid "Timeboxing is a technique to help you focus by dividing a longer activity (such as a 30 minute study session) into smaller blocks. If you set the timebox time limit to a non-zero number of minutes, AnkiDroid will periodically show a message saying you how many cards you've managed to study during the prescribed time limit." +msgstr "" + +#: src/settings.md:99 +msgid "Display" +msgstr "" + +#: src/settings.md:100 +msgid "This subsection relates to the way cards are displayed during reviewing" +msgstr "" + +#: src/settings.md:102 +msgid "Keep screen on" +msgstr "" + +#: src/settings.md:103 +msgid "Ignore the automatic screen timeout setting in Android to always keep the screen on." +msgstr "" + +#: src/settings.md:105 +msgid "Fullscreen mode" +msgstr "" + +#: src/settings.md:106 +msgid "Switches to an immersive fullscreen mode so that you can use more of the screen. You can choose between **Hide the system bars** which will hide the system status bar, action bar, and bottom navigation buttons. Alternatively you can choose **Hide the system bars and answer buttons**, which will hide everything except for the actual card content itself. You can temporarily exit fullscreen mode by swiping inwards (i.e. down or up) from the system bars." +msgstr "" + +#: src/settings.md:108 +msgid "_Note that immersive fullscreen mode is only supported on Android 4.4+_" +msgstr "" + +#: src/settings.md:110 +msgid "Center align" +msgstr "" + +#: src/settings.md:111 +msgid "By default AnkiDroid tries to show cards exactly as they are shown on Anki Desktop, however if you prefer your cards to be center aligned vertically in AnkiDroid then you can enable this feature." +msgstr "" + +#: src/settings.md:113 +msgid "Show button time" +msgstr "" + +#: src/settings.md:114 +msgid "By default, the answer buttons will display the time a card will next be shown. If you disable this option, the times will not appear, and only labels like **Again**, **Good** and **Easy** will be shown." +msgstr "" + +#: src/settings.md:116 +msgid "Card zoom" +msgstr "" + +#: src/settings.md:117 +msgid "Here you can increase the zoom level of the card content (excluding images). You can use this option if you want to increase the font size for all cards." +msgstr "" + +#: src/settings.md:119 +msgid "Image zoom" +msgstr "" + +#: src/settings.md:120 +msgid "Here you can increase the zoom level of any images embedded in your cards." +msgstr "" + +#: src/settings.md:122 +msgid "Answer button size" +msgstr "" + +#: src/settings.md:123 +msgid "If you find it difficult to press the answer button, you can use this setting to make it bigger." +msgstr "" + +#: src/settings.md:125 +msgid "Show remaining" +msgstr "" + +#: src/settings.md:126 +msgid "Disabling this allows you to hide the card count in the top left of the screen." +msgstr "" + +#: src/settings.md:128 +msgid "Whiteboard" +msgstr "" + +#: src/settings.md:129 +msgid "This subsection controls the whiteboard in the reviewer. Note: the whiteboard must be enabled in each deck individually from the menu in the study screen." +msgstr "" + +#: src/settings.md:132 +msgid "Stroke width" +msgstr "" + +#: src/settings.md:133 +msgid "Control the stroke width of the whiteboard. Reducing the stroke width may allow you to draw with more detail." +msgstr "" + +#: src/settings.md:135 +msgid "Black strokes" +msgstr "" + +#: src/settings.md:136 +msgid "Use black strokes instead of color, which may reduce memory usage. Note: this setting doesn't apply when night mode is enabled." +msgstr "" + +#: src/settings.md:138 +msgid "Automatic display answer" +msgstr "" + +#: src/settings.md:139 +msgid "The automatic display answer feature allows you to have the answer shown automatically after some timeout period. You can also have the next question shown automatically; in this case the card is assumed to be failed (i.e. the again button is automatically chosen)" +msgstr "" + +#: src/settings.md:141 +msgid "Time to show answer" +msgstr "" + +#: src/settings.md:142 +msgid "Time to wait until answer is automatically shown" +msgstr "" + +#: src/settings.md:144 +msgid "Time to show next question" +msgstr "" + +#: src/settings.md:145 +msgid "Time to wait until next question is automatically shown." +msgstr "" + +#: src/settings.md:147 +msgid "Fonts" +msgstr "" + +#: src/settings.md:148 +msgid "In this screen you can change the font used by AnkiDroid, and some scaling options related to fonts. See the [custom fonts](advanced-features/custom-fonts.md) section for more information about using custom fonts." +msgstr "" + +#: src/settings.md:151 +msgid "Default font" +msgstr "" + +#: src/settings.md:152 +msgid "Choose the default font used by the AnkiDroid reviewer. You can add fonts to this list by copying them to the **fonts** folder." +msgstr "" + +#: src/settings.md:154 +msgid "Default font applicability" +msgstr "" + +#: src/settings.md:155 +msgid "The default setting is to only use the default font when no font has been specified in the card styling via Anki Desktop, however you can also force the default font to be applied, ignoring any font specification in the card styling." +msgstr "" + +#: src/settings.md:157 +msgid "Browser and editor font" +msgstr "" + +#: src/settings.md:158 +msgid "The font to be used by the browser and editor" +msgstr "" + +#: src/settings.md:160 +msgid "Card browser font scaling" +msgstr "" + +#: src/settings.md:161 +msgid "Lets you change the font size used in the card browser." +msgstr "" + +#: src/gestures.md:3 +msgid "[Actions](#actions)" +msgstr "" + +#: src/gestures.md:4 +msgid "[No action](#no-action)" +msgstr "" + +#: src/gestures.md:5 +msgid "[Answer button 1](#answer-button-1)" +msgstr "" + +#: src/gestures.md:6 +msgid "[Answer button 2](#answer-button-2)" +msgstr "" + +#: src/gestures.md:7 +msgid "[Answer button 3](#answer-button-3)" +msgstr "" + +#: src/gestures.md:8 +msgid "[Answer button 4](#answer-button-4)" +msgstr "" + +#: src/gestures.md:9 +msgid "[Answer recommended (green)](#answer-recommended-green)" +msgstr "" + +#: src/gestures.md:10 +msgid "[Answer better than recommended](#answer-better-than-recommended)" +msgstr "" + +#: src/gestures.md:12 +msgid "[Edit card](#edit-card)" +msgstr "" + +#: src/gestures.md:13 +msgid "[Mark](#mark)" +msgstr "" + +#: src/gestures.md:14 +msgid "[Lookup expression](#lookup-expression)" +msgstr "" + +#: src/gestures.md:15 +msgid "[Bury card](#bury-card)" +msgstr "" + +#: src/gestures.md:16 +msgid "[Suspend card](#suspend-card)" +msgstr "" + +#: src/gestures.md:17 +msgid "[Delete note](#delete-note)" +msgstr "" + +#: src/gestures.md:18 +msgid "[Play media](#play-media)" +msgstr "" + +#: src/gestures.md:19 +msgid "[Abort learning](#abort-learning)" +msgstr "" + +#: src/gestures.md:20 +msgid "[Bury note](#bury-note)" +msgstr "" + +#: src/gestures.md:21 +msgid "[Suspend note](#suspend-note)" +msgstr "" + +#: src/gestures.md:22 +msgid "[Toggle Red Flag](#toggle-red-flag)" +msgstr "" + +#: src/gestures.md:23 +msgid "[Toggle Orange Flag](#toggle-orange-flag)" +msgstr "" + +#: src/gestures.md:24 +msgid "[Toggle Green Flag](#toggle-green-flag)" +msgstr "" + +#: src/gestures.md:25 +msgid "[Toggle Blue Flag](#toggle-blue-flag)" +msgstr "" + +#: src/gestures.md:26 +msgid "[Remove Flag](#remove-flag)" +msgstr "" + +#: src/gestures.md:27 +msgid "[Advanced](#advanced)" +msgstr "" + +#: src/gestures.md:28 +msgid "[Collection path](#collection-path)" +msgstr "" + +#: src/gestures.md:29 +msgid "[Force full sync](#force-full-sync)" +msgstr "" + +#: src/gestures.md:30 +msgid "[Advanced Statistics](#advanced-statistics)" +msgstr "" + +#: src/gestures.md:31 +msgid "[Workarounds](#workarounds)" +msgstr "" + +#: src/gestures.md:32 +msgid "[Type answer into the card](#type-answer-into-the-card)" +msgstr "" + +#: src/gestures.md:33 +msgid "[Input Workaround](#input-workaround)" +msgstr "" + +#: src/gestures.md:34 +msgid "[Longclick Workaround](#longclick-workaround)" +msgstr "" + +#: src/gestures.md:35 +msgid "[Fix for Hebrew Vowels](#fix-for-hebrew-vowels)" +msgstr "" + +#: src/gestures.md:36 +msgid "[Text to Speech](#text-to-speech)" +msgstr "" + +#: src/gestures.md:37 +msgid "[Lookup Dictionary](#lookup-dictionary)" +msgstr "" + +#: src/gestures.md:38 +msgid "[Reset Languages](#reset-languages)" +msgstr "" + +#: src/gestures.md:39 +msgid "[eReader (up/down buttons)](#ereader-updown-buttons)" +msgstr "" + +#: src/gestures.md:40 +msgid "[eReader Double Scrolling](#ereader-double-scrolling)" +msgstr "" + +#: src/gestures.md:42 +msgid "AnkiDroid allows you to customize the interface, so that actions you perform frequently can be accomplished quickly by using tap and swipe gestures." +msgstr "" + +#: src/gestures.md:45 +msgid "Actions" +msgstr "" + +#: src/gestures.md:46 +msgid "The following gestures can be used:" +msgstr "" + +#: src/gestures.md:48 +msgid "Swipe up" +msgstr "" + +#: src/gestures.md:49 +msgid "Swipe down" +msgstr "" + +#: src/gestures.md:50 +msgid "Swipe left" +msgstr "" + +#: src/gestures.md:51 +msgid "Swipe right" +msgstr "" + +#: src/gestures.md:52 +msgid "Double touch" +msgstr "" + +#: src/gestures.md:53 +msgid "Touch top" +msgstr "" + +#: src/gestures.md:54 +msgid "Touch bottom" +msgstr "" + +#: src/gestures.md:55 +msgid "Touch left" +msgstr "" + +#: src/gestures.md:56 +msgid "Tough right" +msgstr "" + +#: src/gestures.md:58 +msgid "The following actions are available for each gesture:" +msgstr "" + +#: src/gestures.md:60 +msgid "No action" +msgstr "" + +#: src/gestures.md:61 +msgid "Don't do anything. Useful if you want to disable certain swipes, tap zones and so on." +msgstr "" + +#: src/gestures.md:63 +msgid "Answer button 1" +msgstr "" + +#: src/gestures.md:64 +msgid "When the answer screen is shown, choose the red button, indicating you wish to review the card again soon. This is useful when you forgot a card or wish to review it more frequently. When the question is shown, this action (and all other answer actions below) will simply show the answer." +msgstr "" + +#: src/gestures.md:69 +msgid "Answer button 2" +msgstr "" + +#: src/gestures.md:70 +msgid "When the answer screen is shown, choose the second button from the left, generally indicating you found the card hard to remember." +msgstr "" + +#: src/gestures.md:73 +msgid "Answer button 3" +msgstr "" + +#: src/gestures.md:74 +msgid "When the answer screen is shown, choose the third button from the left." +msgstr "" + +#: src/gestures.md:76 +msgid "Answer button 4" +msgstr "" + +#: src/gestures.md:77 +msgid "When the answer screen is shown, choose the fourth button from the left (when applicable)." +msgstr "" + +#: src/gestures.md:79 +msgid "Answer recommended (green)" +msgstr "" + +#: src/gestures.md:80 +msgid "When the answer screen is shown, choose the green button. This is the button you should end up using the most." +msgstr "" + +#: src/gestures.md:83 +msgid "Answer better than recommended" +msgstr "" + +#: src/gestures.md:84 +msgid "When the answer screen is shown, choose the button on the right, indicating you found the card too easy to remember and would like a much longer delay." +msgstr "" + +#: src/gestures.md:89 +msgid "Undoes the last action." +msgstr "" + +#: src/gestures.md:91 +msgid "Edit card" +msgstr "" + +#: src/gestures.md:92 +msgid "Edits the current card." +msgstr "" + +#: src/gestures.md:94 +msgid "Mark" +msgstr "" + +#: src/gestures.md:95 +msgid "Adds a tag called **Marked** the current note, so it can be easily found in a search." +msgstr "" + +#: src/gestures.md:97 +msgid "Lookup expression" +msgstr "" + +#: src/gestures.md:98 +msgid "When the lookup feature is enabled (in advanced settings), lookup an expression in the selected dictionary. Note: the expression needs to be copied to the clipboard before this action will work." +msgstr "" + +#: src/gestures.md:101 +msgid "Bury card" +msgstr "" + +#: src/gestures.md:102 +msgid "Hides the current card from review." +msgstr "" + +#: src/gestures.md:104 +msgid "Suspend card" +msgstr "" + +#: src/gestures.md:105 +msgid "Prevent current card from being shown during review until you unsuspend it via the card browser." +msgstr "" + +#: src/gestures.md:108 +msgid "Deletes the currently shown note and all of its cards." +msgstr "" + +#: src/gestures.md:110 +msgid "Play media" +msgstr "" + +#: src/gestures.md:111 +msgid "Replay any audio on the card." +msgstr "" + +#: src/gestures.md:113 +msgid "Abort learning" +msgstr "" + +#: src/gestures.md:114 +msgid "Stop reviewing and go back to the deck overview page." +msgstr "" + +#: src/gestures.md:116 +msgid "Bury note" +msgstr "" + +#: src/gestures.md:117 +msgid "Bury the current note (i.e. hide it until the next day)." +msgstr "" + +#: src/gestures.md:119 +msgid "Suspend note" +msgstr "" + +#: src/gestures.md:120 +msgid "Suspend the current note (i.e. hide it until you unsuspend it)." +msgstr "" + +#: src/gestures.md:122 +msgid "Toggle Red Flag" +msgstr "" + +#: src/gestures.md:123 +msgid "Enables the red flag, unless the flag is already red, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:125 +msgid "Toggle Orange Flag" +msgstr "" + +#: src/gestures.md:126 +msgid "Enables the orange flag, unless the flag is already orange, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:128 +msgid "Toggle Green Flag" +msgstr "" + +#: src/gestures.md:129 +msgid "Enables the green flag, unless the flag is already green, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:131 +msgid "Toggle Blue Flag" +msgstr "" + +#: src/gestures.md:132 +msgid "Enables the blue flag, unless the flag is already blue, in which case the flag is disabled." +msgstr "" + +#: src/gestures.md:134 +msgid "Remove Flag" +msgstr "" + +#: src/gestures.md:135 +msgid "Removes the flag from the card." +msgstr "" + +#: src/gestures.md:137 +msgid "Advanced" +msgstr "" + +#: src/gestures.md:138 +msgid "Some less common features for advanced users are shown here" +msgstr "" + +#: src/gestures.md:140 +msgid "Collection path" +msgstr "" + +#: src/gestures.md:141 +msgid "Change the location where AnkiDroid's data is stored (not recommended)" +msgstr "" + +#: src/gestures.md:143 +msgid "Force full sync" +msgstr "" + +#: src/gestures.md:144 +msgid "Tap this item to force a full upload or download on the next sync (for example, because you accidentally deleted a deck on one side and want to restore the deck rather than having its deletion synchronized)." +msgstr "" + +#: src/gestures.md:147 +msgid "Take into account the effect of future reviews in the **Forecast** graph. More info [here](advanced-features/advanced-statistics.md)." +msgstr "" + +#: src/gestures.md:149 +msgid "Workarounds" +msgstr "" + +#: src/gestures.md:151 +msgid "Type answer into the card" +msgstr "" + +#: src/gestures.md:153 +msgid "If you have set up your cards to ask you to type in the answer (as explained in [this section of the desktop manual](https://docs.ankiweb.net/templates/intro.html)), AnkiDroid will display a keyboard on such cards and allow you to check your answer." +msgstr "" + +#: src/gestures.md:155 +msgid "In order to improve user experience when working with the whiteboard and gestures, we use a typing box separate from the card, which is inconsistent with the way the feature works on Anki Desktop." +msgstr "" + +#: src/gestures.md:157 +msgid "For full consistency with Anki Desktop, you can enable this option which allows you to save screen area, and choose an appropriate font (e.g. Japanese vs Chinese) for the input box." +msgstr "" + +#: src/gestures.md:159 +msgid "Input Workaround" +msgstr "" + +#: src/gestures.md:160 +msgid "Some older devices couldn't gain focus into the text input box for typed-answer fields, so this was added (Hidden for API > 14)." +msgstr "" + +#: src/gestures.md:162 +msgid "Longclick Workaround" +msgstr "" + +#: src/gestures.md:163 +msgid "Some older devices couldn't detect longclick for initiating selecting/copying of text, so this was added (Hidden for API > 10)." +msgstr "" + +#: src/gestures.md:165 +msgid "Fix for Hebrew Vowels" +msgstr "" + +#: src/gestures.md:166 +msgid "Some older devices couldn't render Hebrew text, so this feature was added which allows the user to download and install a Hebrew font which is known to work (Hidden for API > 15)." +msgstr "" + +#: src/gestures.md:168 +msgid "Text to Speech" +msgstr "" + +#: src/gestures.md:169 +msgid "Enable this option to have Android read out all the text on your flashcards using the default text to speech engine. Google's built-in TTS engine should work; 3rd party TTS engines may or may not. AnkiDroid will ask you to select the language for the front and back of your cards once for each deck on the first time you review a card in that deck. To change the language or disable TTS for a given deck after making your initial choice, you'll need to use the **reset languages** option described below and reconfigure for each deck." +msgstr "" + +#: src/gestures.md:173 +msgid "Alternatively, if you want only fragments of cards to be read aloud, or if you want to set the TTS language for multiple decks at once, you can insert `` tags into [card templates](advanced-features/customizing-card-layout.md). For example, with the following template for the back of the card" +msgstr "" + +#: src/gestures.md:178 +msgid "answer" +msgstr "" + +#: src/gestures.md:180 src/gestures.md:194 +msgid "\"android\"" +msgstr "" + +#: src/gestures.md:180 src/gestures.md:194 +msgid "\"en_GB\"" +msgstr "" + +#: src/gestures.md:185 +msgid "only the `EnglishTranslation` field will be read aloud in a British English voice; the `Example` field, lying outside the `` tag, won't be read aloud. Every `` tag needs to have the following two attributes:" +msgstr "" + +#: src/gestures.md:187 +msgid "**`service`**: should be set to **`android`**, otherwise the contents of the **``** tag won't be read aloud;" +msgstr "" + +#: src/gestures.md:188 +msgid "**`voice`**: used to select the TTS language; should be a [two- or three- letter language code](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes), optionally followed by an underscore and a [two-letter country or region code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). A frequently updated list of languages supported by the Google TTS engine can be found on its [Wikipedia page](https://en.wikipedia.org/wiki/Google_Text-to-Speech)." +msgstr "" + +#: src/gestures.md:190 +msgid "To make both AnkiDroid and the [AwesomeTTS](https://ankiatts.appspot.com) plugin to the desktop application use a TTS engine to read aloud certain card fragments, put the `` tag inside the `` tag recognised by AwesomeTTS, or vice versa. An example:" +msgstr "" + +#: src/gestures.md:193 +msgid "\"sapi5js\"" +msgstr "" + +#: src/gestures.md:193 +msgid "\"39\"" +msgstr "" + +#: src/gestures.md:193 src/gestures.md:193 +msgid "\"0\"" +msgstr "" + +#: src/gestures.md:193 +msgid "\"Microsoft David Desktop\"" +msgstr "" + +#: src/gestures.md:193 +msgid "\"100\"" +msgstr "" + +#: src/gestures.md:200 +msgid "AnkiDroid automatically ignores `` tags selecting an unknown TTS service. In contrast, AwesomeTTS may display a warning message on encountering the `` tag; to suppress it, uncheck the two _Show errors_ checkboxes on the _Playback_ tab of the _AwesomeTTS: Configuration_ dialog in the desktop application." +msgstr "" + +#: src/gestures.md:202 +msgid "_This feature may be removed in the future in favor of a separately downloadable plugin._" +msgstr "" + +#: src/gestures.md:204 +msgid "Lookup Dictionary" +msgstr "" + +#: src/gestures.md:205 +msgid "Dictionary to use to lookup words copied to the clipboard in the reviewer. After setting up a dictionary, do the following to perform the lookup:" +msgstr "" + +#: src/gestures.md:207 +msgid "Longclick on the text you want to copy in the reviewer" +msgstr "" + +#: src/gestures.md:208 +msgid "After selecting the word you want to copy, press the **copy** icon in the app bar at the top of the screen" +msgstr "" + +#: src/gestures.md:209 +msgid "Tap once anywhere on the flashcard" +msgstr "" + +#: src/gestures.md:210 +msgid "A magnifying glass icon should appear, which performs the lookup when clicked" +msgstr "" + +#: src/gestures.md:212 +msgid "Alternatively, the lookup action can be performed via a gesture." +msgstr "" + +#: src/gestures.md:214 src/gestures.md:222 +msgid "_This feature will likely be removed in the future in favor of a plugin_" +msgstr "" + +#: src/gestures.md:216 +msgid "Reset Languages" +msgstr "" + +#: src/gestures.md:217 +msgid "Useful for resetting the TTS language" +msgstr "" + +#: src/gestures.md:219 +msgid "eReader (up/down buttons)" +msgstr "" + +#: src/gestures.md:220 +msgid "Support for eReader hardware buttons (see [issue 1625](https://github.com/ankidroid/Anki-Android/issues/1625))" +msgstr "" + +#: src/gestures.md:224 +msgid "eReader Double Scrolling" +msgstr "" + +#: src/gestures.md:225 +msgid "Double the scrolling distance when using the eReader hardware buttons" +msgstr "" + +#: src/note-formatting-toolbar.md:3 +msgid "The note formatting toolbar contains basic text formatting buttons (Bold, Italic, Underline, Horizontal Line, Insert Title, Change Font Size, [Insert MathJax](advanced-features/mathjax.md) and Insert Cloze Deletion)." +msgstr "" + +#: src/note-formatting-toolbar.md:5 +msgid "It also allows the addition of user-defined toolbar buttons using HTML. HTML is a powerful language allowing nearly endless customization of your cards. [Our wiki](https://github.com/ankidroid/Anki-Android/wiki/Note-Editor-Toolbar-HTML-Samples) contains common code samples to get you started." +msgstr "" + +#: src/note-formatting-toolbar.md:7 +msgid "A user-defined toolbar button can be removed by long pressing the button and selecting **Delete**." +msgstr "" + +#: src/keyboard-shortcuts.md:3 +msgid "Home Screen" +msgstr "" + +#: src/keyboard-shortcuts.md:5 src/keyboard-shortcuts.md:13 +#: src/keyboard-shortcuts.md:32 src/keyboard-shortcuts.md:53 +#: src/keyboard-shortcuts.md:64 +msgid "Shortcut" +msgstr "" + +#: src/keyboard-shortcuts.md:5 src/keyboard-shortcuts.md:13 +#: src/keyboard-shortcuts.md:32 src/keyboard-shortcuts.md:53 +#: src/keyboard-shortcuts.md:64 +msgid "Purpose" +msgstr "" + +#: src/keyboard-shortcuts.md:7 src/keyboard-shortcuts.md:55 +msgid "A" +msgstr "" + +#: src/keyboard-shortcuts.md:7 +msgid "Add Note" +msgstr "" + +#: src/keyboard-shortcuts.md:8 src/keyboard-shortcuts.md:40 +msgid "B" +msgstr "" + +#: src/keyboard-shortcuts.md:9 +msgid "Y" +msgstr "" + +#: src/keyboard-shortcuts.md:9 +msgid "Sync" +msgstr "" + +#: src/keyboard-shortcuts.md:11 +msgid "Reviewer" +msgstr "" + +#: src/keyboard-shortcuts.md:15 src/keyboard-shortcuts.md:49 +msgid "1" +msgstr "" + +#: src/keyboard-shortcuts.md:15 src/keyboard-shortcuts.md:15 +#: src/keyboard-shortcuts.md:15 src/keyboard-shortcuts.md:20 +#: src/keyboard-shortcuts.md:27 +msgid "," +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "2" +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "3" +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "4" +msgstr "" + +#: src/keyboard-shortcuts.md:15 +msgid "Press the nth answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:16 +msgid "Gamepad Y" +msgstr "" + +#: src/keyboard-shortcuts.md:16 +msgid "Flip Card/Press the first answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:17 +msgid "Gamepad X" +msgstr "" + +#: src/keyboard-shortcuts.md:17 +msgid "Flip Card/Press the second answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:18 +msgid "Gamepad B" +msgstr "" + +#: src/keyboard-shortcuts.md:18 +msgid "Flip Card/Press the third answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:19 +msgid "Gamepad A" +msgstr "" + +#: src/keyboard-shortcuts.md:19 +msgid "Flip Card/Press the fourth answer button" +msgstr "" + +#: src/keyboard-shortcuts.md:20 +msgid "Space" +msgstr "" + +#: src/keyboard-shortcuts.md:20 src/keyboard-shortcuts.md:34 +msgid "Enter" +msgstr "" + +#: src/keyboard-shortcuts.md:20 +msgid "Flip Card/Answer Good" +msgstr "" + +#: src/keyboard-shortcuts.md:21 +msgid "e" +msgstr "" + +#: src/keyboard-shortcuts.md:21 src/keyboard-shortcuts.md:56 +msgid "Edit Note" +msgstr "" + +#: src/keyboard-shortcuts.md:22 +msgid "\\*" +msgstr "" + +#: src/keyboard-shortcuts.md:22 src/keyboard-shortcuts.md:58 +msgid "Mark Note" +msgstr "" + +#: src/keyboard-shortcuts.md:23 +msgid "\\-" +msgstr "" + +#: src/keyboard-shortcuts.md:23 +msgid "Bury Card" +msgstr "" + +#: src/keyboard-shortcuts.md:24 +msgid "=" +msgstr "" + +#: src/keyboard-shortcuts.md:24 +msgid "Bury Note" +msgstr "" + +#: src/keyboard-shortcuts.md:25 +msgid "@" +msgstr "" + +#: src/keyboard-shortcuts.md:25 +msgid "Suspend Card" +msgstr "" + +#: src/keyboard-shortcuts.md:26 +msgid "!" +msgstr "" + +#: src/keyboard-shortcuts.md:26 +msgid "Suspend Note" +msgstr "" + +#: src/keyboard-shortcuts.md:27 +msgid "r" +msgstr "" + +#: src/keyboard-shortcuts.md:27 +msgid "F5" +msgstr "" + +#: src/keyboard-shortcuts.md:27 +msgid "Replay Media" +msgstr "" + +#: src/keyboard-shortcuts.md:28 +msgid "z" +msgstr "" + +#: src/keyboard-shortcuts.md:30 +msgid "Note Editor" +msgstr "" + +#: src/keyboard-shortcuts.md:34 src/keyboard-shortcuts.md:39 +#: src/keyboard-shortcuts.md:40 src/keyboard-shortcuts.md:41 +#: src/keyboard-shortcuts.md:42 src/keyboard-shortcuts.md:43 +#: src/keyboard-shortcuts.md:44 src/keyboard-shortcuts.md:45 +#: src/keyboard-shortcuts.md:46 src/keyboard-shortcuts.md:47 +#: src/keyboard-shortcuts.md:48 src/keyboard-shortcuts.md:49 +#: src/keyboard-shortcuts.md:55 src/keyboard-shortcuts.md:56 +#: src/keyboard-shortcuts.md:57 src/keyboard-shortcuts.md:58 +#: src/keyboard-shortcuts.md:59 src/keyboard-shortcuts.md:66 +msgid "Ctrl" +msgstr "" + +#: src/keyboard-shortcuts.md:34 src/keyboard-shortcuts.md:39 +#: src/keyboard-shortcuts.md:40 src/keyboard-shortcuts.md:41 +#: src/keyboard-shortcuts.md:42 src/keyboard-shortcuts.md:43 +#: src/keyboard-shortcuts.md:44 src/keyboard-shortcuts.md:45 +#: src/keyboard-shortcuts.md:46 src/keyboard-shortcuts.md:47 +#: src/keyboard-shortcuts.md:47 src/keyboard-shortcuts.md:48 +#: src/keyboard-shortcuts.md:48 src/keyboard-shortcuts.md:48 +#: src/keyboard-shortcuts.md:49 src/keyboard-shortcuts.md:55 +#: src/keyboard-shortcuts.md:56 src/keyboard-shortcuts.md:57 +#: src/keyboard-shortcuts.md:58 src/keyboard-shortcuts.md:59 +#: src/keyboard-shortcuts.md:59 src/keyboard-shortcuts.md:66 +msgid "+" +msgstr "" + +#: src/keyboard-shortcuts.md:34 +msgid "Save Note" +msgstr "" + +#: src/keyboard-shortcuts.md:35 src/keyboard-shortcuts.md:57 +msgid "D" +msgstr "" + +#: src/keyboard-shortcuts.md:35 +msgid "Select Deck" +msgstr "" + +#: src/keyboard-shortcuts.md:36 +msgid "L" +msgstr "" + +#: src/keyboard-shortcuts.md:36 src/keyboard-shortcuts.md:62 +msgid "Card Template Editor" +msgstr "" + +#: src/keyboard-shortcuts.md:37 +msgid "N" +msgstr "" + +#: src/keyboard-shortcuts.md:37 +msgid "Select Note Type" +msgstr "" + +#: src/keyboard-shortcuts.md:38 +msgid "T" +msgstr "" + +#: src/keyboard-shortcuts.md:38 +msgid "Edit Tags" +msgstr "" + +#: src/keyboard-shortcuts.md:39 src/keyboard-shortcuts.md:66 +msgid "P" +msgstr "" + +#: src/keyboard-shortcuts.md:39 +msgid "Preview Note" +msgstr "" + +#: src/keyboard-shortcuts.md:40 +msgid "Bold" +msgstr "" + +#: src/keyboard-shortcuts.md:41 +msgid "I" +msgstr "" + +#: src/keyboard-shortcuts.md:41 +msgid "Italic" +msgstr "" + +#: src/keyboard-shortcuts.md:42 +msgid "U" +msgstr "" + +#: src/keyboard-shortcuts.md:42 +msgid "Underline" +msgstr "" + +#: src/keyboard-shortcuts.md:43 src/keyboard-shortcuts.md:59 +msgid "R" +msgstr "" + +#: src/keyboard-shortcuts.md:43 +msgid "Insert Horizontal Rule" +msgstr "" + +#: src/keyboard-shortcuts.md:44 +msgid "H" +msgstr "" + +#: src/keyboard-shortcuts.md:44 +msgid "Insert Title" +msgstr "" + +#: src/keyboard-shortcuts.md:45 +msgid "F" +msgstr "" + +#: src/keyboard-shortcuts.md:45 +msgid "Change Font Size" +msgstr "" + +#: src/keyboard-shortcuts.md:46 +msgid "M" +msgstr "" + +#: src/keyboard-shortcuts.md:46 +msgid "Insert MathJax Equation" +msgstr "" + +#: src/keyboard-shortcuts.md:47 src/keyboard-shortcuts.md:48 +msgid "Shift" +msgstr "" + +#: src/keyboard-shortcuts.md:47 src/keyboard-shortcuts.md:48 +msgid "C" +msgstr "" + +#: src/keyboard-shortcuts.md:47 +msgid "Insert New Cloze Deletion" +msgstr "" + +#: src/keyboard-shortcuts.md:48 src/keyboard-shortcuts.md:59 +msgid "Alt" +msgstr "" + +#: src/keyboard-shortcuts.md:48 +msgid "Insert Cloze Deletion using existing number" +msgstr "" + +#: src/keyboard-shortcuts.md:49 +msgid ".." +msgstr "" + +#: src/keyboard-shortcuts.md:49 +msgid "0" +msgstr "" + +#: src/keyboard-shortcuts.md:49 +msgid "Insert User-Defined HTML" +msgstr "" + +#: src/keyboard-shortcuts.md:55 +msgid "Select All" +msgstr "" + +#: src/keyboard-shortcuts.md:56 +msgid "E" +msgstr "" + +#: src/keyboard-shortcuts.md:57 +msgid "Change Deck" +msgstr "" + +#: src/keyboard-shortcuts.md:58 +msgid "K" +msgstr "" + +#: src/keyboard-shortcuts.md:66 +msgid "Preview Changed" +msgstr "" + +#: src/rtl.md:3 +msgid "Anki and AnkiDroid have full support for RTL languages such as Arabic, Hebrew, and Persian." +msgstr "" + +#: src/rtl.md:5 +msgid "Editing Fields as RTL" +msgstr "" + +#: src/rtl.md:6 +msgid "Fields can be marked as RTL (currently possible only from Anki Desktop) for RTL editing. When a field is marked as RTL, then the text is right-aligned in editing fields and punctuation is correctly displayed at the end (left) of sentences. Text that contains blocks of LTR characters will be properly displayed as well, with the beginning of the sentence appearing to the right of the LTR block and the end of the sentence being displayed to the left of the LTR block." +msgstr "" + +#: src/rtl.md:8 +msgid "Directionality is especially important for editing and creating RTL cloze deletions as the cloze format includes both neutral and LTR markup characters. Therefore it is recommended to use a separate note type for LTR cloze deletions and RTL cloze deletions." +msgstr "" + +#: src/rtl.md:10 +msgid "Displaying Fields as RTL during study" +msgstr "" + +#: src/rtl.md:11 +msgid "To display a field as RTL, with proper right-alignment and directionality (punctuation at left of sentences, proper flow around LTR blocks), the field should be wrapped in a div or span element with the RTL directionality specified:" +msgstr "" + +#: src/rtl.md:14 +msgid "\"rtl\"" +msgstr "" + +#: src/anki-desktop.md:3 +msgid "[Via Cloud Sync](#via-cloud-sync)" +msgstr "" + +#: src/anki-desktop.md:4 +msgid "[Sync existing decks into a new AnkiDroid install](#sync-existing-decks-into-a-new-ankidroid-install)" +msgstr "" + +#: src/anki-desktop.md:5 +msgid "[Sync from AnkiDroid to Computer](#sync-from-ankidroid-to-computer)" +msgstr "" + +#: src/anki-desktop.md:7 +msgid "Anki has a free cloud synchronization service called AnkiWeb that makes it easy to keep your card decks in sync between mobile devices and your computer. If you cannot use sync for some reason, it's also possible to use USB, though this method is more laborious." +msgstr "" + +#: src/anki-desktop.md:9 +msgid "Note that AnkiDroid is not affiliated with Anki Desktop or AnkiWeb. AnkiDroid is based on Anki Desktop but it is developed by an entirely separate community of volunteers." +msgstr "" + +#: src/anki-desktop.md:11 +msgid "![AnkiDesktop.png](img/AnkiDesktop.png)" +msgstr "" + +#: src/anki-desktop.md:13 +msgid "Via Cloud Sync" +msgstr "" + +#: src/anki-desktop.md:14 +msgid "Before you can use AnkiWeb, you'll first need to create an account by visiting [https://ankiweb.net](https://ankiweb.net) and clicking the **Sign Up** button. If you have used AnkiWeb in the past, you can skip this step. After signing up, see the corresponding instructions below, depending on whether you are trying to get your existing decks into AnkiDroid or out of AnkiDroid." +msgstr "" + +#: src/anki-desktop.md:16 +msgid "Sync existing decks into a new AnkiDroid install" +msgstr "" + +#: src/anki-desktop.md:17 +msgid "In this scenario you have some existing Anki decks that you want to copy into a new install of AnkiDroid by syncing with AnkiWeb. Open the Anki client with your existing decks (usually this would be Anki desktop, but it could also mean a version of AnkiDroid you have been using on another device), and click the synchronization button (which has two arrows in a circle) at the top right of the deck list." +msgstr "" + +#: src/anki-desktop.md:19 +msgid "If you have never used AnkiWeb before you will need to enter your credentials if prompted, and then press the **Upload to AnkiWeb** button to confirm overwriting the empty collection on AnkiWeb with your existing decks in Anki. Anki will upload all your cards, images and audio to AnkiWeb. If you have a lot of media, this may take some time." +msgstr "" + +#: src/anki-desktop.md:21 +msgid "Once the synchronization has completed, open AnkiDroid in the device that you are trying to copy the existing decks into, and tap the **Sync** button in the app bar at the top of the main [deck list](deck-picker.md). After entering your AnkiWeb credentials, AnkiDroid will download all your cards and media, and remember your login information for next time." +msgstr "" + +#: src/anki-desktop.md:24 +msgid "Note that if you have any existing material in AnkiDroid before attempting to sync, you may be shown a message asking you to choose to either download from AnkiWeb, or upload to AnkiWeb. If you are happy to lose the cards in AnkiDroid then simply choose **Download**. If you need to merge the existing cards with AnkiDroid then you should see the [resolving conflicts](ankiweb-conflicts.md#dealing-with-merge-conflicts-on-ankiweb) section before continuing." +msgstr "" + +#: src/anki-desktop.md:26 +msgid "After the first synchronization has completed, you can click the sync button again any time you wish to synchronize your changes to the cloud. Only changes made since the previous sync will be sent, so subsequent syncs are a lot faster." +msgstr "" + +#: src/anki-desktop.md:28 +msgid "If you add some new cards on the desktop computer and want to sync them to AnkiDroid, you'd repeat the same basic process: sync on desktop (or close the program, as it syncs automatically on close by default), and then tap the sync button on AnkiDroid." +msgstr "" + +#: src/anki-desktop.md:30 +msgid "Sync from AnkiDroid to Computer" +msgstr "" + +#: src/anki-desktop.md:31 +msgid "The process of syncing from AnkiDroid to computer is essentially the same as syncing from computer to AnkiDroid, but in reverse." +msgstr "" + +#: src/anki-desktop.md:33 +msgid "From the [deck list](deck-picker.md), tap the sync button in the top right (it has two arrows in a circle). If it's your first time using AnkiWeb, you may need to enter your login credentials, and then press the \"upload\" button to upload your AnkiDroid collection to AnkiWeb." +msgstr "" + +#: src/anki-desktop.md:35 +msgid "Once the synchronization has completed, open Anki Desktop on your computer and press the sync button there (with two arrows in a circle), and Anki will download your collection." +msgstr "" + +#: src/ankiweb-conflicts.md:2 +msgid "Although it should not happen often, occasionally you may end up in the position where your cards on AnkiDroid can not be automatically merged with the cards on AnkiWeb. In this case it's necessary to choose to either upload to or download from AnkiWeb, which would overwrite any changes on the other side. " +msgstr "" + +#: src/ankiweb-conflicts.md:4 +msgid "If you have new cards on both sides which you want to keep, before syncing you can [export a deck package](exporting.md) for each deck containing new cards from AnkiDroid, then when you do the sync choose **download** to download from AnkiWeb. After the synchronization has completed, you can import the decks you previously exported from AnkiDroid, as per the [importing section](importing/importing-anki-files.md)." +msgstr "" + +#: src/ankiweb-conflicts.md:6 +msgid "Via USB" +msgstr "" + +#: src/ankiweb-conflicts.md:8 +msgid "If you don't have regular internet access, it's still possible to copy decks back and forth to your device, by using USB." +msgstr "" + +#: src/ankiweb-conflicts.md:10 +msgid "The USB method works by importing or exporting all your decks at once. This means that unlike syncing via AnkiWeb, you can't make changes from two locations at once and then merge them. Instead, if you wish to add cards on the desktop, you need to make sure you export the latest version of your collection from your mobile device first, or you'll end up losing any reviews done on the mobile device." +msgstr "" + +#: src/ankiweb-conflicts.md:12 +msgid "Thus the workflow you would typically use is to export your collection from your mobile device and import it into the desktop, make modifications on the desktop, and then export your collection and import it back into your mobile device." +msgstr "" + +#: src/ankiweb-conflicts.md:14 +msgid "AnkiDroid can't directly import text files. If you wish to do that, you'll need to do that with the desktop program, and then import your collection into AnkiDroid." +msgstr "" + +#: src/ankiweb-conflicts.md:16 +msgid "Copy all decks from Anki Desktop to AnkiDroid via USB" +msgstr "" + +#: src/ankiweb-conflicts.md:18 +msgid "On your computer:" +msgstr "" + +#: src/ankiweb-conflicts.md:19 +msgid "Open the desktop program." +msgstr "" + +#: src/ankiweb-conflicts.md:20 +msgid "Choose File>Export from the menu." +msgstr "" + +#: src/ankiweb-conflicts.md:21 +msgid "Click the **Export...** button. Make sure to leave **all decks** selected, as it's not possible to import individual decks into AnkiDroid. **Include scheduling information** must also remain checked." +msgstr "" + +#: src/ankiweb-conflicts.md:22 +msgid "Anki will automatically create a collection.apkg on your desktop. If the file is named something else, please see the previous step again." +msgstr "" + +#: src/ankiweb-conflicts.md:23 +msgid "Connect your Android device to your computer via the USB cable." +msgstr "" + +#: src/ankiweb-conflicts.md:24 +msgid "Open the file explorer on your computer and view the contents of your Android device." +msgstr "" + +#: src/ankiweb-conflicts.md:25 +msgid "Locate the AnkiDroid folder." +msgstr "" + +#: src/ankiweb-conflicts.md:26 +msgid "Drag the collection.apkg file from your desktop into this AnkiDroid folder." +msgstr "" + +#: src/ankiweb-conflicts.md:28 +msgid "Then in AnkiDroid:" +msgstr "" + +#: src/ankiweb-conflicts.md:29 +msgid "From the main decks screen, tap **Import file** from the menu" +msgstr "" + +#: src/ankiweb-conflicts.md:30 +msgid "Tap on **Collection** and then confirm" +msgstr "" + +#: src/ankiweb-conflicts.md:32 +msgid "Once complete, the decks on your device will have been replaced with the decks from your desktop. See the section on [importing apkg files](importing/importing-anki-files.md) for more help with importing." +msgstr "" + +#: src/ankiweb-conflicts.md:35 +msgid "Copy all decks from AnkiDroid to Anki Desktop via USB" +msgstr "" + +#: src/ankiweb-conflicts.md:37 +msgid "The process to copy your decks from AnkiDroid to Anki Desktop is essentially the same as above, but in reverse." +msgstr "" + +#: src/ankiweb-conflicts.md:38 +msgid "Start with your device disconnected from USB" +msgstr "" + +#: src/ankiweb-conflicts.md:39 +msgid "Choose **Export collection** from the main menu in the Deck Screen" +msgstr "" + +#: src/ankiweb-conflicts.md:40 +msgid "Ensure **Include scheduling information** remains checked and press **OK**" +msgstr "" + +#: src/ankiweb-conflicts.md:41 +msgid "Connect device to computer using USB" +msgstr "" + +#: src/ankiweb-conflicts.md:42 +msgid "Copy the **collection.apkg** from the path specified in the message to the desktop on your computer" +msgstr "" + +#: src/ankiweb-conflicts.md:43 +msgid "Double click on the file to import into Anki Desktop" +msgstr "" + +#: src/ankiweb-conflicts.md:45 +msgid "See the [exporting section](exporting.md) below for more detailed information on exporting from AnkiDroid." +msgstr "" + +#: src/advanced-features/intro.md:3 +msgid "[MathJax Support](mathjax.md)" +msgstr "" + +#: src/advanced-features/intro.md:4 +msgid "[Reverse Cards](reverse-cards.md)" +msgstr "" + +#: src/advanced-features/intro.md:5 +msgid "[Custom Fonts](custom-fonts.md)" +msgstr "" + +#: src/advanced-features/intro.md:6 +msgid "[Custom Card Layout](customizing-card-layout.md)" +msgstr "" + +#: src/advanced-features/intro.md:7 +msgid "[Type in the answer feature](type-in-answer.md)" +msgstr "" + +#: src/advanced-features/intro.md:8 +msgid "[Advanced Statistics](advanced-statistics.md)" +msgstr "" + +#: src/advanced-features/intro.md:9 +msgid "[Reminders](reminders.md)" +msgstr "" + +#: src/advanced-features/intro.md:10 +msgid "[Automatic Language Selection](set-language-hint.md)" +msgstr "" + +#: src/advanced-features/mathjax.md:2 +msgid "Mathjax is a modern typesetting library for math and chemistry. AnkiDroid supports Mathjax cards out of the box. Mathjax is configured to expect TeX formatting, with `\\(` and `\\)` delimiting inline equations and `\\[` and `\\]` for display equations." +msgstr "" + +#: src/advanced-features/mathjax.md:4 +msgid "To try it out, enter the following into a field:" +msgstr "" + +#: src/advanced-features/mathjax.md:10 +msgid "and preview the card." +msgstr "" + +#: src/advanced-features/mathjax.md:12 +msgid "For more details, see [Mathjax Support](https://docs.ankiweb.net/math.html#mathjax) in the Anki Manual." +msgstr "" + +#: src/advanced-features/mathjax.md:14 +msgid "[Previous workarounds](https://www.reddit.com/r/Anki/comments/ar7lxd/how_to_load_mathjax_color_extension_on_anki/egm6u5j) are no longer necessary as of AnkiDroid 2.9." +msgstr "" + +#: src/advanced-features/reverse-cards.md:3 +msgid "The Anki system has [built-in note types which allow you to review cards in both directions](https://docs.ankiweb.net/getting-started.html#note-types). When [creating new material](../adding-notes.md) in AnkiDroid, you should choose one of these note types, such as **Basic (and reversed card)**, which will automatically generate a reverse card for you." +msgstr "" + +#: src/advanced-features/reverse-cards.md:6 +msgid "![ReverseNoteType](../img/ReverseNoteType.png)" +msgstr "" + +#: src/advanced-features/reverse-cards.md:8 +msgid "If you used the wrong note type when adding your material, you can change the note type via the [edit note screen](../editing-notes.md), or you can change the note type for multiple cards at once using the browser in Anki Desktop. To do this, follow the instructions in the [syncing with Anki Desktop section](../anki-desktop.md), then in Anki Desktop open the browser, select the cards you want to change, then choose **Change note type** from the menu." +msgstr "" + +#: src/advanced-features/reverse-cards.md:11 +msgid "Alternatively, if your cards are using a custom card layout which doesn't include a reverse card, you can edit the note type to include a reverse card by following the instructions in the [reverse cards section](https://docs.ankiweb.net/templates/generation.html#reverse-cards) of the Anki Desktop user manual. While less convenient than using Anki Desktop, it is possible to edit the note type from directly within AnkiDroid as well; see the [custom card layout section](../advanced-features/customizing-card-layout.md) for more on this." +msgstr "" + +#: src/advanced-features/custom-fonts.md:3 +msgid "AnkiDroid allows you to use non-system fonts on your cards. To set them up properly, it is strongly recommended to use the official method that is used by Anki Desktop. Please see [the corresponding section in the desktop manual](https://docs.ankiweb.net/templates/styling.html#installing-fonts) for more information." +msgstr "" + +#: src/advanced-features/custom-fonts.md:5 +msgid "Alternatively, you can create a new subfolder **fonts** in the main AnkiDroid directory (i.e. the folder which contains the **backups** subfolder, specified under `Settings > Advanced > AnkiDroid directory)`, copy a compatible font file (i.e. .ttf) there, and then set this as the default font under `Settings > Fonts > Default font`. " +msgstr "" + +#: src/advanced-features/custom-fonts.md:7 +msgid "**Note:** this method will change the default font for **all** of your cards, whereas the official method can be more specific. Also, if you sync with AnkiWeb, using this method will lead to cards being displayed differently on different devices." +msgstr "" + +#: src/advanced-features/custom-fonts.md:9 +msgid "Only fonts in the ttf format are officially supported in Anki/AnkiDroid; the [Google Noto](https://fonts.google.com/noto) font set is highly recommended for all languages, and some other free fonts can be found [here](https://github.com/ankidroid/Anki-Android/wiki/Freely-distributable-fonts)." +msgstr "" + +#: src/advanced-features/custom-fonts.md:11 +msgid "Please note that AnkiDroid has to load the entire font into memory in order to use it, and fonts for Asian languages can be quite large. If you have an older device and notice AnkiDroid crashing frequently after installing a font, you may have exceeded your device's memory limits. For Google Noto, it's not recommended to use the combined CJK font, rather get the individual languages [separately from here](https://github.com/googlei18n/noto-cjk)." +msgstr "" + +#: src/advanced-features/custom-fonts.md:13 +msgid "**Note 1**: If you have **Fetch media on sync** disabled, you may need to manually copy the font file from Anki Desktop to your AnkiDroid/collection.media folder." +msgstr "" + +#: src/advanced-features/custom-fonts.md:15 +msgid "**Note 2**: If you can't get your font to work after following the steps in here and the Anki Desktop manual, please refer to the FAQ for " +msgstr "" + +#: src/advanced-features/custom-fonts.md:15 +msgid "detailed steps on how to debug font issues" +msgstr "" + +#: src/advanced-features/customizing-card-layout.md:2 +msgid "The layout of flashcards is completely customizable, although this is an advanced topic with a fairly steep learning curve, and you will probably find it a lot more convenient to do the customization with [Anki Desktop](../anki-desktop.md). " +msgstr "" + +#: src/advanced-features/customizing-card-layout.md:4 +msgid "The [card templates section](https://docs.ankiweb.net/templates/intro.html) of the Anki Desktop manual has detailed instructions on how to edit note types, and most of the actions discussed there are also available from AnkiDroid by tapping **cards** at the bottom of the note editor, or choosing the **manage note types** option in the deck picker. Since detailed information on customizing card layouts is available in the Anki desktop manual, it will not be repeated here." +msgstr "" + +#: src/advanced-features/customizing-card-layout.md:6 +msgid "There is an [advanced formatting page](https://github.com/ankidroid/Anki-Android/wiki/Advanced-formatting) on the AnkiDroid wiki with various hints on how you can get the most out of your card formatting, and we encourage you to read it, and edit it freely if you have any tips that you'd like to share with the community." +msgstr "" + +#: src/advanced-features/type-in-answer.md:3 +msgid "AnkiDroid allows you to type in the correct answer and then compare it to the right answer. You have to set this up with Anki desktop, as described in the [Anki Desktop manual](https://docs.ankiweb.net/templates/fields.html#checking-your-answer)." +msgstr "" + +#: src/advanced-features/type-in-answer.md:5 +msgid "Anki desktop replaces the **{{type:NN}}** field on the front of a card with an input box in the card. On AnkiDroid it is replaced with a **......** prompt instead, and a text input box is shown at the bottom. The comparison between typed text and the correct text is shown on the answer side in place of the **{{type:NN}}** field there, like on Anki desktop." +msgstr "" + +#: src/advanced-features/type-in-answer.md:7 +msgid "The text input box and the soft keyboard can be hidden by ticking **Disable typing in answer** in the preferences." +msgstr "" + +#: src/advanced-features/type-in-answer.md:9 +msgid "Even with typing disabled, the correct answer is shown on the answer side. This is done on purpose; otherwise the correct answer might not be shown at all." +msgstr "" + +#: src/advanced-features/type-in-answer.md:11 +msgid "To hide the comparison (e.g. because the correct answer is shown anyway), the HTML id **typeans** can be used. Add following to the [card styling](https://docs.ankiweb.net/templates/styling.html#card-styling) using Anki Desktop." +msgstr "" + +#: src/advanced-features/type-in-answer.md:19 +msgid "The type answer prompt and the comparison have more classes that can be used to change the way they are displayed. Some of these are the same as on Anki Desktop, some are specific to AnkiDroid." +msgstr "" + +#: src/advanced-features/type-in-answer.md:21 +msgid "The comparison uses three classes, typeGood, typeBad and typeMissed to add green, red and gray background to the typing comparison. These three classes are used on Anki desktop as well." +msgstr "" + +#: src/advanced-features/type-in-answer.md:23 +msgid "The **......** prompt has the class **typePrompt**." +msgstr "" + +#: src/advanced-features/type-in-answer.md:25 +msgid "When typing is set to off in the preferences, the class **typeOff** is added to the prompt on the question side, and to the div element containing the comparison on the answer side. This class can be used to show the type prompt or to hide the typing comparison in this case." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:3 +msgid "If Advanced Statistics are enabled, it changes the **Forecast** graph so that it shows the estimated number of reviews that will be due on a given day in the future taking into account future reviews, learning new cards and failing cards. The bars and the left axis show the number of cards due on each day if you study all cards each day, while the line and the right axis show the number of unseen (shown as **learn**), young and mature cards your deck or collection will consist of if you study all cards each day. The forecast graph does count reviews that are currently overdue. It assumes that the overdue cards will be reviewed according to the **maximum reviews/day** deck option." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:5 +msgid "Advanced Statistics can be enabled in `Settings -> Advanced -> Advanced Statistics` (in plugin section)." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:7 +msgid "The outcome of future reviewing, learning or failing cards affects reviews after that future review. To take this into account, the probability of each outcome is computed from the review log. Then the outcome is randomly chosen, such that an outcome which is more likely according to the review log is more likely to be chosen than an outcome which is less likely according to the review log. The settings all affect how the effect of the outcome of future reviews on subsequent reviews is taken into account." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:9 +msgid "Compute first n days, simulate remainder" +msgstr "" + +#: src/advanced-features/advanced-statistics.md:10 +msgid "If this setting is set to a number greater than 0, instead of randomly choosing an outcome, each possible outcome is taken into account in the simulation, together with its probability. The probability is taken into account for the graph and for future reviews in which it results, which also affect the graph. One review has a couple of possible outcomes (say 4), which all result in a review. That review also has a couple of possible outcomes and so on. If many reviews are simulated this way, many reviews (4 x 4 x 4 x ... ) have to be taken into account which increases the time it takes to compose the graph. Therefore, for reviews later than n days from now are simulated by randomly choosing an outcome." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:14 +msgid "In summary, higher n gives a more accurate graph, but it takes more time to compose the graph." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:16 +msgid "Precision of computation" +msgstr "" + +#: src/advanced-features/advanced-statistics.md:18 +msgid "Reviews which occur with a probability smaller than 100% minus the configured precision of the computation are simulated by randomly choosing an outcome rather than taking into account each possible outcome. This setting is only applicable if the first n days are computed. If Advanced Statistics are disabled, the **Forecast** graph shows the estimated number of reviews that will be due on a given day in the future if you do not review cards, learn no new cards and fail no cards." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:21 +msgid "In summary, higher precision gives a more accurate graph, but it takes more time to compose the graph." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:23 +msgid "Number of iterations of the simulation" +msgstr "" + +#: src/advanced-features/advanced-statistics.md:24 +msgid "Composes the graph several times and then displays the average of these graphs. Each time the graph is composed, another outcome might be randomly chosen. If we average many outcomes which are randomly chosen taking into account the probabilities from the review log, the average outcome will likely be close to the average of the probabilities from the review log. If we average many graphs, the average graph will likely be close to the graph which is generated by taking into account all possible outcomes. If the number of graphs which are averaged is not too high, it will be faster than taking into account all possible outcomes." +msgstr "" + +#: src/advanced-features/advanced-statistics.md:29 +msgid "In summary, a higher number of iterations gives a more accurate graph, but it takes more time to compose the graph." +msgstr "" + +#: src/advanced-features/reminders.md:2 +msgid "AnkiDroid can remind you to devote some time to reviewing cards every day at a specific time via Android's notification framework. You can configure reminders for each options group independently. To configure a notification go to Deck options > Reminders, then tick the checkbox and select the time you want to be notified at. To stop receiving notifications go to Deck options > Reminders and unmark the checkbox." +msgstr "" + +#: src/advanced-features/reminders.md:7 +msgid "Notifications only work for top level decks. Please let us know if you want us to add notifications for subdecks too." +msgstr "" + +#: src/advanced-features/set-language-hint.md:2 +msgid "AnkiDroid has an in Automatic Language Selection feature in the Note Editor starting with AnkiDroid 2.13. This feature allows you to define a default language to be used in your keyboard for a field in a note type." +msgstr "" + +#: src/advanced-features/set-language-hint.md:5 +msgid "For example, if you have Russian and English note fields, and your keyboard supports the setImeHintLocales Android API, the keyboard layout will switch to Russian in the first field and back to English in the second automatically when the fields get focus. [Checkout video reference for demonstration](https://www.youtube.com/watch?v=JrxDjTrRhBE)" +msgstr "" + +#: src/help.md:1 +msgid "Help & Support" +msgstr "" + +#: src/help.md:3 +msgid "Before Asking" +msgstr "" + +#: src/help.md:5 +msgid "Before asking for help, please try searching through the [AnkiDroid Manual](intro.md), the list of [Frequently Asked Questions](https://github.com/ankidroid/Anki-Android/wiki/FAQ), and also the main [Anki Manual](https://docs.ankiweb.net) for general help with the Anki system and features, and any issues not limited to Android." +msgstr "" + +#: src/help.md:7 +msgid "Support" +msgstr "" + +#: src/help.md:8 +msgid "If you were unable to find what you needed in the documentation above, please visit the relevant site below:" +msgstr "" + +#: src/help.md:10 +msgid "Non-Android-Specific Issues" +msgstr "" + +#: src/help.md:11 +msgid "AnkiDroid (the Android version of Anki) is created and managed independently from other Anki versions. For the PC / Web / iOS versions, and general Anki issues that are not limited to Android, please visit the main [Anki support site](https://forums.ankiweb.net)." +msgstr "" + +#: src/help.md:13 +msgid "AnkiDroid Questions" +msgstr "" + +#: src/help.md:14 +msgid "For questions and help concerning AnkiDroid, please visit the [user forum](https://groups.google.com/g/anki-android), or you can send your questions to the forum's [public email address](mailto:public-forum@ankidroid.org) if you don't want to register on the forum." +msgstr "" + +#: src/help.md:16 +msgid "Bug Reports and Feature Requests" +msgstr "" + +#: src/help.md:17 +msgid "For bug reports and feature requests, please search through the current list of open issues on the [AnkiDroid issue tracker](https://github.com/ankidroid/Anki-Android/issues), and if there are no existing issues, create a new issue including as much information as possible. For bug reports, please also include the output of **debug info** by following the steps below: " +msgstr "" + +#: src/help.md:20 +msgid "Open the navigation drawer by tapping the button on the top left of the screen" +msgstr "" + +#: src/help.md:21 +msgid "Tap **settings**" +msgstr "" + +#: src/help.md:22 +msgid "Tap **advanced**" +msgstr "" + +#: src/help.md:23 +msgid "Tap **about AnkiDroid** at the bottom" +msgstr "" + +#: src/help.md:24 +msgid "Tap the **copy debug info** button at the bottom (which copies **debug info** to the clipboard)" +msgstr "" + +#: src/help.md:25 +msgid "If filling out the bug report on your mobile device, paste the contents of the clipboard directly to the issue. Alternatively, you can paste the contents of the clipboard into a new email, send it to yourself, then copy and paste that into the bug report from your computer." +msgstr "" + +#: src/help.md:27 +msgid "![DebugInfo.png](img/DebugInfo.png)" +msgstr "" + +#: src/help.md:29 +msgid "**Note:** if you are unable to open the app at all, so cannot even access **settings** then please follow [these instructions](https://github.com/ankidroid/Anki-Android/wiki/Unopenable-collections)." +msgstr "" + +#: src/help.md:31 +msgid "This **debug info** is important as it allows us to match your report with our internal crash report data. " +msgstr "" + +#: src/help.md:34 +msgid "AnkiDroid is an open source project, and anyone is welcome to contribute (including non-developers)! For help with contributing to AnkiDroid, please first check the [contribution wiki page](https://github.com/ankidroid/Anki-Android/wiki/Contributing), and ask any further questions in the [main forum](https://groups.google.com/g/anki-android)." +msgstr "" + +#: src/beta-testing.md:2 +msgid "If you want to try out the latest features in AnkiDroid, you can sign up for the beta testing program as follows:" +msgstr "" + +#: src/beta-testing.md:4 +msgid "Visit the [Google Play Beta page](https://play.google.com/apps/testing/com.ichi2.anki)" +msgstr "" + +#: src/beta-testing.md:5 +msgid "Click **Become a beta tester**" +msgstr "" + +#: src/beta-testing.md:7 +msgid "After following these steps, the latest beta version will automatically be installed by Google Play in the same way as ordinary updates." +msgstr "" + +#: src/beta-testing.md:9 +msgid "If you are more adventurous, you can also become an alpha tester, by joining the [alpha testers group](https://groups.google.com/g/ankidroidalphatesters) in addition to performing the above steps for beta testing." +msgstr "" + +#: src/beta-testing.md:11 +msgid "Please submit any bugs you find in these development versions to the AnkiDroid issue tracker, as per the [main help page](help.md)." +msgstr "" + +#: src/beta-testing.md:13 +msgid "If you wish to leave the testing program at any time, simply visit the [Google Play Beta page](https://play.google.com/apps/testing/com.ichi2.anki) and click **Leave the test**." +msgstr "" + +#: src/contributing.md:3 +msgid "[Get involved](#get-involved)" +msgstr "" + +#: src/contributing.md:4 +msgid "[Translate](#translate)" +msgstr "" + +#: src/contributing.md:5 +msgid "[Develop](#develop)" +msgstr "" + +#: src/contributing.md:7 +msgid "AnkiDroid is an open source project, and its development relies on contributions from volunteers. Here are some of the ways you can contribute to the AnkiDroid project:" +msgstr "" + +#: src/contributing.md:9 +msgid "Get involved" +msgstr "" + +#: src/contributing.md:10 +msgid "Rate the app, join the [AnkiDroid forum](https://groups.google.com/g/anki-android) and answer questions for other users, submit bug reports, become a [beta tester](beta-testing.md), etc. More detailed information on ways you can contribute as a non-developer can be found on the [Wiki](https://github.com/ankidroid/Anki-Android/wiki/Contributing)." +msgstr "" + +#: src/contributing.md:12 +msgid "Translate" +msgstr "" + +#: src/contributing.md:13 +msgid "Translations of AnkiDroid and this user manual are all contributed by users, and are greatly appreciated. See the " +msgstr "" + +#: src/contributing.md:14 +msgid "translating" +msgstr "" + +#: src/contributing.md:14 +msgid " wiki page for detailed instructions on how to contribute translations." +msgstr "" + +#: src/contributing.md:16 +msgid "Develop" +msgstr "" + +#: src/contributing.md:17 +msgid "The source code for AnkiDroid is available on our main [Github page](https://github.com/ankidroid/Anki-Android), and bug fixes as well as new features are very welcome. Before investing a lot of time on working on a new feature, you may like to ask on the forum first if it's likely to be merged into the main project, as not all features will be accepted. If you are just getting started with Android programming, feel free to ask on the forum for some tips and/or tasks which are suitable for beginners." +msgstr "" + +#: src/changelog/v2.15.md:1 +msgid "Version 2.15.6 (20210714)" +msgstr "" + +#: src/changelog/v2.15.md:2 +msgid "One more crash fix, no crashes shall be left unfixed! If we can help it." +msgstr "" + +#: src/changelog/v2.15.md:4 +msgid "Version 2.15.5 (20210713)" +msgstr "" + +#: src/changelog/v2.15.md:5 +msgid "[🤜🤛 Thank you! Your support makes the fixes happen!](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:6 +msgid "Full-screen navigation drawer drag is a preference, default off" +msgstr "" + +#: src/changelog/v2.15.md:7 +msgid "Floating Action Button ('+') labels are clickable again" +msgstr "" + +#: src/changelog/v2.15.md:8 +msgid "Fixed crash on first run post-install on tablets" +msgstr "" + +#: src/changelog/v2.15.md:9 +msgid "Fixed odd weekly breakdown stats chart behavior" +msgstr "" + +#: src/changelog/v2.15.md:10 +msgid "Fixed crash creating new deck from deck chooser" +msgstr "" + +#: src/changelog/v2.15.md:11 +msgid "[Updated translations](https://crowdin.com/project/ankidroid) (thank you translators!)" +msgstr "" + +#: src/changelog/v2.15.md:12 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/47?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:13 +msgid "We are deep into development for v2.16 + Google Summer of Code, lots of new stuff coming" +msgstr "" + +#: src/changelog/v2.15.md:14 +msgid "Happy reviewing!" +msgstr "" + +#: src/changelog/v2.15.md:16 +msgid "Version 2.15.4 (20210602)" +msgstr "" + +#: src/changelog/v2.15.md:17 +msgid "Saw one crash show up for 2.15.3: if you touched the 3 numbers instead of the deck name on the deck list on phones, it would crash" +msgstr "" + +#: src/changelog/v2.15.md:19 +msgid "Temporarily revert full screen navigation drawer option to fix" +msgstr "" + +#: src/changelog/v2.15.md:21 +msgid "Version 2.15.3 (20210602)" +msgstr "" + +#: src/changelog/v2.15.md:22 +msgid "[❤️ Thank you so much for the donations! We appreciate it ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:23 +msgid "Another batch of fixes stabilizing all the work done for AnkiDroid 2.15" +msgstr "" + +#: src/changelog/v2.15.md:24 +msgid "Fix \"Search All Decks\" in Card Browser not searching" +msgstr "" + +#: src/changelog/v2.15.md:25 +msgid "Make new full screen navigation drawer open optional, default off" +msgstr "" + +#: src/changelog/v2.15.md:26 +msgid "Preserve edited search in card browser if navigation drawer opens" +msgstr "" + +#: src/changelog/v2.15.md:27 +msgid "Fix crash editing Tags dialog when switching back from another app" +msgstr "" + +#: src/changelog/v2.15.md:28 +msgid "Fix incorrect cloze help link" +msgstr "" + +#: src/changelog/v2.15.md:29 +msgid "Increase touchable area of undo icon" +msgstr "" + +#: src/changelog/v2.15.md:30 +msgid "Fix legacy / handebar template parsing" +msgstr "" + +#: src/changelog/v2.15.md:31 +msgid "Fix icon sizes for notifications and search" +msgstr "" + +#: src/changelog/v2.15.md:32 +msgid "Fix audio files incorrectly importing when attached" +msgstr "" + +#: src/changelog/v2.15.md:33 +msgid "Fix deck options \"steps\" showing up with lots of decimal places" +msgstr "" + +#: src/changelog/v2.15.md:34 +msgid "Update translations, add Kannada language" +msgstr "" + +#: src/changelog/v2.15.md:35 +msgid "Fix F-Droid app store publishing" +msgstr "" + +#: src/changelog/v2.15.md:36 +msgid "Correct navigation away from and back to Changelog" +msgstr "" + +#: src/changelog/v2.15.md:37 +msgid "Fix template parsing for \"{{FrontSide}}\"" +msgstr "" + +#: src/changelog/v2.15.md:38 +msgid "Fix stats tab view layout in RTL context" +msgstr "" + +#: src/changelog/v2.15.md:39 +msgid "Fix preview of cloze cards from note editor " +msgstr "" + +#: src/changelog/v2.15.md:40 +msgid "[Full changelog here](https://github.com/ankidroid/Anki-Android/milestone/45?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:43 +msgid "Version 2.15.2 (20210526)" +msgstr "" + +#: src/changelog/v2.15.md:44 +msgid "[❤️ Your donations here give us the time to work on the app, thank you! ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:45 src/changelog/v2.15.md:58 +msgid "🔥 Hot fixes for 2.15.0 issues (See below for 2.15.0 notes 👇 it was a huge release!)" +msgstr "" + +#: src/changelog/v2.15.md:46 +msgid "2.15 should have no regressions now we think 🤞 " +msgstr "" + +#: src/changelog/v2.15.md:47 +msgid "That means we'll slow down the releases and these popups now, sorry + thank you " +msgstr "" + +#: src/changelog/v2.15.md:48 +msgid "Fix another API issue breaking card add from external apps" +msgstr "" + +#: src/changelog/v2.15.md:49 +msgid "Fix conditional template issue that caused blank cards for some" +msgstr "" + +#: src/changelog/v2.15.md:50 +msgid "Fix auto-advance ignoring \"no advance\" setting if card had audio" +msgstr "" + +#: src/changelog/v2.15.md:51 +msgid "Gracefully handle corrupt collections with invalid current decks selected" +msgstr "" + +#: src/changelog/v2.15.md:52 +msgid "Publish to Amazon App Store again (go get AnkiDroid on your Fire devices!)" +msgstr "" + +#: src/changelog/v2.15.md:53 +msgid "[Issue tracker milestone here](https://github.com/ankidroid/Anki-Android/milestone/44?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:56 +msgid "Version 2.15.1 (20210525)" +msgstr "" + +#: src/changelog/v2.15.md:57 +msgid "[❤️ Your donations funded this rapid set of fixes, enjoy! ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:59 +msgid "Do not auto-update users to scheduler v2. Yet." +msgstr "" + +#: src/changelog/v2.15.md:60 +msgid "Fix crash on undo after deck delete" +msgstr "" + +#: src/changelog/v2.15.md:61 +msgid "Try harder to successfully paste images" +msgstr "" + +#: src/changelog/v2.15.md:62 +msgid "Reviewer performance fix - only load mathjax if needed" +msgstr "" + +#: src/changelog/v2.15.md:63 +msgid "Fixed compatibility issue for 2.15 collections on 2.14" +msgstr "" + +#: src/changelog/v2.15.md:64 +msgid "Fixed API issue breaking card add from external apps" +msgstr "" + +#: src/changelog/v2.15.md:65 +msgid "Fresh language translations. See a bad translation? [You can fix it easily!](https://crowdin.com/project/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:66 +msgid "[Detailed issue log](https://github.com/ankidroid/Anki-Android/milestone/43?closed=1)" +msgstr "" + +#: src/changelog/v2.15.md:68 +msgid "Version 2.15.0 (20210524)" +msgstr "" + +#: src/changelog/v2.15.md:69 +msgid "[❤️ Your donations funded these features, enjoy! ❤️](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.15.md:70 +msgid "Thanks to [Google Summer of Code](https://github.com/ankidroid/Anki-Android/wiki/Google-Summer-of-Code-2021) students for a HUGE effort!" +msgstr "" + +#: src/changelog/v2.15.md:71 +msgid "Way too many changes to describe, but here are the highlights:" +msgstr "" + +#: src/changelog/v2.15.md:72 +msgid "New timezone code supported for sync with AnkiDesktop!" +msgstr "" + +#: src/changelog/v2.15.md:73 +msgid "Performance, stability improvements everywhere" +msgstr "" + +#: src/changelog/v2.15.md:74 +msgid "General UI improvements (accessibility, dark mode, design, more)" +msgstr "" + +#: src/changelog/v2.15.md:75 +msgid "Many new keyboard shortcuts and gesture actions" +msgstr "" + +#: src/changelog/v2.15.md:76 +msgid "Languages: Added Odia, Malayalam; big RTL support improvements!" +msgstr "" + +#: src/changelog/v2.15.md:77 +msgid "Reviewer: Javascript API: many new methods" +msgstr "" + +#: src/changelog/v2.15.md:78 +msgid "Improved account login, sync conflict, card template UI" +msgstr "" + +#: src/changelog/v2.15.md:79 +msgid "Tags and Decks dialogs have search!" +msgstr "" + +#: src/changelog/v2.15.md:80 +msgid "Whiteboard: erase, pen colors, stroke width" +msgstr "" + +#: src/changelog/v2.15.md:81 +msgid "NoteEditor: Mathjax 3, capitalize sentences setting" +msgstr "" + +#: src/changelog/v2.15.md:82 +msgid "Huge quality improvements all over codebase, helps future developers" +msgstr "" + +#: src/changelog/v2.15.md:83 +msgid "[🚧 Full 638 item changelog here! 🚧](https://github.com/ankidroid/Anki-Android/milestone/37?closed=1)" +msgstr "" + +#: src/changelog/v2.14.md:1 +msgid "Version 2.14.6 (20210309)" +msgstr "" + +#: src/changelog/v2.14.md:2 +msgid "Reviewer: fix \"my card is blank now with 2.14.5! help!\" 😱" +msgstr "" + +#: src/changelog/v2.14.md:3 +msgid "Reviewer: fix Android 8/8.1 review buttons disappear (finally?)" +msgstr "" + +#: src/changelog/v2.14.md:5 +msgid "Version 2.14.5 (20210307)" +msgstr "" + +#: src/changelog/v2.14.md:6 +msgid "We really appreciate the [donations](https://opencollective.com/ankidroid), they paid for these fixes 🤝" +msgstr "" + +#: src/changelog/v2.14.md:7 +msgid "NoteEditor: Android 11 users can crop!" +msgstr "" + +#: src/changelog/v2.14.md:8 +msgid "NoteEditor: Canceling crop twice won't delete your image" +msgstr "" + +#: src/changelog/v2.14.md:9 +msgid "DeckList: parent limits altered to match Desktop" +msgstr "" + +#: src/changelog/v2.14.md:10 +msgid "DeckList: current deck saved as correct type" +msgstr "" + +#: src/changelog/v2.14.md:11 +msgid "SchedulerV2: allow very small delays" +msgstr "" + +#: src/changelog/v2.14.md:12 +msgid "KNOWN ISSUE: [Android 8/8.1 answer buttons disappear](https://github.com/ankidroid/Anki-Android/issues/7369). Use gestures as workaround." +msgstr "" + +#: src/changelog/v2.14.md:13 +msgid "Anyone with Android 8/8.1 that reproduces this and knows how to develop Android layouts? We'd love the help!" +msgstr "" + +#: src/changelog/v2.14.md:15 +msgid "Version 2.14.4 (20210307)" +msgstr "" + +#: src/changelog/v2.14.md:16 +msgid "Re-released immediately as 2.14.5 after release script issue 🤷😅" +msgstr "" + +#: src/changelog/v2.14.md:18 +msgid "Version 2.14.3 (20210109)" +msgstr "" + +#: src/changelog/v2.14.md:19 +msgid "[The AnKing](https://www.youtube.com/c/TheAnKing) has graced us with a [new intro video](https://youtu.be/iuBU_OM9oAM)! 🤓" +msgstr "" + +#: src/changelog/v2.14.md:20 +msgid "Still happily overwhelmed by the [donations](https://opencollective.com/ankidroid) 💪" +msgstr "" + +#: src/changelog/v2.14.md:21 +msgid "Reviewer: Fix mark note keyboard shortcut" +msgstr "" + +#: src/changelog/v2.14.md:22 +msgid "NoteEditor: Fix to remove padding if removing formatting toolbar" +msgstr "" + +#: src/changelog/v2.14.md:23 +msgid "Previewer: Fix to show same card after edit" +msgstr "" + +#: src/changelog/v2.14.md:24 +msgid "Scheduler: Fix v1 scheduler completes deck when only learn cards due" +msgstr "" + +#: src/changelog/v2.14.md:26 +msgid "Version 2.14.2 (20201202)" +msgstr "" + +#: src/changelog/v2.14.md:27 +msgid "Wow! We are humbled by the [donations](https://opencollective.com/ankidroid) 🤯" +msgstr "" + +#: src/changelog/v2.14.md:28 +msgid "The resources are already going to contributors to improve the app! Thank you ❤️ " +msgstr "" + +#: src/changelog/v2.14.md:29 +msgid "Note Editor: Fix image crop not working first time" +msgstr "" + +#: src/changelog/v2.14.md:30 +msgid "Note Editor: Paste image at cursor not end" +msgstr "" + +#: src/changelog/v2.14.md:31 +msgid "Note Editor: Fix Ctrl+C opens preview" +msgstr "" + +#: src/changelog/v2.14.md:32 +msgid "Note Editor: Add menubar toggle to disable editing toolbar" +msgstr "" + +#: src/changelog/v2.14.md:33 +msgid "Home Screen: Fix Vivo device shortcut creation (again)" +msgstr "" + +#: src/changelog/v2.14.md:34 +msgid "Reviewer: Fix numeric keypad not working" +msgstr "" + +#: src/changelog/v2.14.md:35 +msgid "Note Editor: Fix cloze cards going to wrong deck" +msgstr "" + +#: src/changelog/v2.14.md:36 +msgid "Navigation Menu: Fix safe display app hang" +msgstr "" + +#: src/changelog/v2.14.md:37 +msgid "Preferences: Fix gestures menu translation / ordering issue" +msgstr "" + +#: src/changelog/v2.14.md:38 +msgid "Translations: thanks [translators!](https://crowdin.com/project/ankidroid/activity_stream) - you can help too!" +msgstr "" + +#: src/changelog/v2.14.md:39 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/39?closed=1)" +msgstr "" + +#: src/changelog/v2.14.md:41 +msgid "Version 2.14.1 (2020-11-23)" +msgstr "" + +#: src/changelog/v2.14.md:42 +msgid "Always free, always open source, but you may [donate if you like 😊](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.14.md:43 +msgid "Move sync button to right of action bar (vs search)" +msgstr "" + +#: src/changelog/v2.14.md:44 +msgid "Fix duplicate note detection" +msgstr "" + +#: src/changelog/v2.14.md:45 +msgid "Fix add deck shortcut on Vivo devices" +msgstr "" + +#: src/changelog/v2.14.md:46 +msgid "Fix non-translatable 'Card Info' strings" +msgstr "" + +#: src/changelog/v2.14.md:47 +msgid "Fix suspended card handling in filtered decks" +msgstr "" + +#: src/changelog/v2.14.md:48 +msgid "Sync translations from volunteers on our crowdin.com site (thank you!)" +msgstr "" + +#: src/changelog/v2.14.md:49 +msgid "Fix crash on mismatched WebView ABIs" +msgstr "" + +#: src/changelog/v2.14.md:50 +msgid "Fix crash invalid filename handling while pasting image" +msgstr "" + +#: src/changelog/v2.14.md:51 +msgid "Fix crash selecting cards in card browser" +msgstr "" + +#: src/changelog/v2.14.md:52 +msgid "Fix crash Android 8 in card browser" +msgstr "" + +#: src/changelog/v2.14.md:53 +msgid "Fix crash in undo labeling" +msgstr "" + +#: src/changelog/v2.14.md:54 +msgid "Fix crash reset password when system browser not exported" +msgstr "" + +#: src/changelog/v2.14.md:55 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/38?closed=1)" +msgstr "" + +#: src/changelog/v2.14.md:57 +msgid "Version 2.14.0 (2020-11-18)" +msgstr "" + +#: src/changelog/v2.14.md:58 +msgid "Enabled Donations - we ❤️ you, [now you can ❤️ us 😊](https://opencollective.com/ankidroid)" +msgstr "" + +#: src/changelog/v2.14.md:59 +msgid "New Screen: Card Info (from Card Browser or as a Reviewer App Bar Button)" +msgstr "" + +#: src/changelog/v2.14.md:60 +msgid "New Screen: Help - easy access to manual, many community pages/manuals, donation page, translations" +msgstr "" + +#: src/changelog/v2.14.md:61 +msgid "Home screen: Add deck shortcut" +msgstr "" + +#: src/changelog/v2.14.md:62 +msgid "Deck Options: SchedV2: Support setting \"Hard Factor\" " +msgstr "" + +#: src/changelog/v2.14.md:63 +msgid "Card Browser: Add deck filtering" +msgstr "" + +#: src/changelog/v2.14.md:64 +msgid "Card Browser: Filter By Flag" +msgstr "" + +#: src/changelog/v2.14.md:65 +msgid "Card Browser: Adding cards defaults to selected deck" +msgstr "" + +#: src/changelog/v2.14.md:66 +msgid "Card Browser: Many more keyboard shortcuts" +msgstr "" + +#: src/changelog/v2.14.md:67 +msgid "Card Browser: Display the number of cards deleted when deleting a note" +msgstr "" + +#: src/changelog/v2.14.md:68 +msgid "Card Browser: Better handling of deck searches containing wildcards" +msgstr "" + +#: src/changelog/v2.14.md:69 +msgid "Reviewer: Basic Android TV Support" +msgstr "" + +#: src/changelog/v2.14.md:70 +msgid "Reviewer: New Gesture: Abort Learning & Sync" +msgstr "" + +#: src/changelog/v2.14.md:71 +msgid "Reviewer: Support AnkiMobile 9-area gesture touch layout" +msgstr "" + +#: src/changelog/v2.14.md:72 +msgid "Reviewer: Improve \"Empty Card\" UX" +msgstr "" + +#: src/changelog/v2.14.md:73 +msgid "Reviewer: Keyboard shortcuts for flags (Ctrl+1...4)" +msgstr "" + +#: src/changelog/v2.14.md:74 +msgid "Note Editor: Editor Toolbar (& keyboard shortcuts) - hugely requested feature!" +msgstr "" + +#: src/changelog/v2.14.md:75 +msgid "Note Editor Toolbar: Apply Custom Commands (& keyboard shortcuts)" +msgstr "" + +#: src/changelog/v2.14.md:76 +msgid "Note Editor: Paste to Insert Image" +msgstr "" + +#: src/changelog/v2.14.md:77 +msgid "Note Editor: Made fields full-width" +msgstr "" + +#: src/changelog/v2.14.md:78 +msgid "Note Editor: Change Font Size for fields" +msgstr "" + +#: src/changelog/v2.14.md:79 +msgid "Note Editor: Expand/Collapse Fields" +msgstr "" + +#: src/changelog/v2.14.md:80 +msgid "Note Editor: Clear Field button" +msgstr "" + +#: src/changelog/v2.14.md:81 +msgid "Note Editor: Ctrl+Shift+Num to switch fields" +msgstr "" + +#: src/changelog/v2.14.md:82 +msgid "Note Editor: Improved image addition / naming" +msgstr "" + +#: src/changelog/v2.14.md:83 +msgid "Note Editor: Add preference to convert newline to HTML (or not)" +msgstr "" + +#: src/changelog/v2.14.md:84 +msgid "OS Integration: Default to \"Anki Card\" in system context menu vs \"Card Browser\"" +msgstr "" + +#: src/changelog/v2.14.md:85 +msgid "Libanki: Add FileUpload API" +msgstr "" + +#: src/changelog/v2.14.md:86 +msgid "Translations: Tagged screenshots on crowdin.com to help our translators" +msgstr "" + +#: src/changelog/v2.14.md:87 +msgid "Stability: Fix rare crashes (down to ~50/day total w/1.8million installs!)" +msgstr "" + +#: src/changelog/v2.14.md:88 +msgid "Performance: massive number of speedups" +msgstr "" + +#: src/changelog/v2.14.md:89 +msgid "Dev: Massively sped up AnkiDroid builds and improved code readability" +msgstr "" + +#: src/changelog/v2.14.md:90 +msgid "Totals: 345 code changes and hundreds of translations, made by volunteers, in 2 months" +msgstr "" + +#: src/changelog/v2.14.md:91 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/30?closed=1)" +msgstr "" + +#: src/changelog/v2.13.md:1 +msgid "Version 2.13.5 (2020-10-03)" +msgstr "" + +#: src/changelog/v2.13.md:2 +msgid "Fix performance for fast (\\<1s) answers in review" +msgstr "" + +#: src/changelog/v2.13.md:3 +msgid "Add links to new Arabic help/manual translation" +msgstr "" + +#: src/changelog/v2.13.md:4 +msgid "Add back button handling to changelog display" +msgstr "" + +#: src/changelog/v2.13.md:5 +msgid "Add rate button to changelog" +msgstr "" + +#: src/changelog/v2.13.md:6 +msgid "Add warning message to handle future db upgrades" +msgstr "" + +#: src/changelog/v2.13.md:7 +msgid "Sync all translations from our volunteer translators (thanks everyone!)" +msgstr "" + +#: src/changelog/v2.13.md:9 +msgid "Version 2.13.4 (2020-09-29)" +msgstr "" + +#: src/changelog/v2.13.md:10 +msgid "Fix crash showing TagsDialog" +msgstr "" + +#: src/changelog/v2.13.md:11 +msgid "Fix crash in gesture detection" +msgstr "" + +#: src/changelog/v2.13.md:12 +msgid "Improve import interrupted error message" +msgstr "" + +#: src/changelog/v2.13.md:13 +msgid "Fix scheduler counts after undo" +msgstr "" + +#: src/changelog/v2.13.md:14 +msgid "Fix Card Browser preview after sort" +msgstr "" + +#: src/changelog/v2.13.md:15 +msgid "Fix button display if answer animation incomplete" +msgstr "" + +#: src/changelog/v2.13.md:16 +msgid "Sync all translations" +msgstr "" + +#: src/changelog/v2.13.md:18 +msgid "Version 2.13.3 (2020-09-23)" +msgstr "" + +#: src/changelog/v2.13.md:19 +msgid "Fix double-clicking answer buttons skipping cards" +msgstr "" + +#: src/changelog/v2.13.md:20 +msgid "Change missing media warning to twice-per-session not twice-per-deck" +msgstr "" + +#: src/changelog/v2.13.md:21 +msgid "Change answer button fade on open" +msgstr "" + +#: src/changelog/v2.13.md:22 +msgid "Updated all translations from volunteer crowdin.com site up to 20200923" +msgstr "" + +#: src/changelog/v2.13.md:24 +msgid "Version 2.13.2 (2020-09-19)" +msgstr "" + +#: src/changelog/v2.13.md:25 +msgid "Fix Crash rare on Card Browser exit" +msgstr "" + +#: src/changelog/v2.13.md:26 +msgid "Fix Crash Android 4.4" +msgstr "" + +#: src/changelog/v2.13.md:27 +msgid "Fix Open Deck failures / improve related messaging" +msgstr "" + +#: src/changelog/v2.13.md:28 +msgid "Fix messaging for Xioami cloze workaround" +msgstr "" + +#: src/changelog/v2.13.md:29 +msgid "Move \"set field language\" after share on Note Editor context menu" +msgstr "" + +#: src/changelog/v2.13.md:31 +msgid "Version 2.13.1 (2020-09-17)" +msgstr "" + +#: src/changelog/v2.13.md:32 +msgid "Add cloze via clipboard paste workaround on MIUI/Xiaomi devices" +msgstr "" + +#: src/changelog/v2.13.md:33 +msgid "Fix Navigation drawer respects safe display / disable animations preference" +msgstr "" + +#: src/changelog/v2.13.md:34 +msgid "Fix Reviewer buttons respect safe display / disable animations preference" +msgstr "" + +#: src/changelog/v2.13.md:35 +msgid "Fix Deck Picker bottom bar opacity" +msgstr "" + +#: src/changelog/v2.13.md:36 +msgid "Fix Error message about missing content on cards" +msgstr "" + +#: src/changelog/v2.13.md:37 +msgid "Fix crash selecting deck that disappears during sync" +msgstr "" + +#: src/changelog/v2.13.md:39 +msgid "Version 2.13.0 (2020-09-15)" +msgstr "" + +#: src/changelog/v2.13.md:40 +msgid "Field tag (such as \"{{Front}}\") appearing in a note's field will be shown as-is in cards." +msgstr "" + +#: src/changelog/v2.13.md:41 +msgid "Add Sync icon badge when changes are pending sync (can be disabled in options)" +msgstr "" + +#: src/changelog/v2.13.md:42 +msgid "Add Edit Note from card Preview while in Card Browser" +msgstr "" + +#: src/changelog/v2.13.md:43 +msgid "Add \"Anki Card\" to system context menu (like \"Card Browser\") - disabled by default" +msgstr "" + +#: src/changelog/v2.13.md:44 +msgid "Add Set keyboard language for specific fields in the note editor (example: one field Japanese, other field Portuguese for input)." +msgstr "" + +#: src/changelog/v2.13.md:45 +msgid "Add Keep keyboard open after adding a note" +msgstr "" + +#: src/changelog/v2.13.md:46 +msgid "Add Card properties available in JavaScript API" +msgstr "" + +#: src/changelog/v2.13.md:47 +msgid "Add JavaScript API versioning for scripts (basis for future plugins)" +msgstr "" + +#: src/changelog/v2.13.md:48 +msgid "Add Auto-Login when selecting saved user account" +msgstr "" + +#: src/changelog/v2.13.md:49 +msgid "Add Allow import of collection.anki21 files when under SchedV1" +msgstr "" + +#: src/changelog/v2.13.md:50 +msgid "Add New screen for first-time users" +msgstr "" + +#: src/changelog/v2.13.md:51 +msgid "Add Button animations when answering cards" +msgstr "" + +#: src/changelog/v2.13.md:52 +msgid "Add Note Editor: Add shortcuts Ctrl+(Alt)+Shift+C to add a cloze." +msgstr "" + +#: src/changelog/v2.13.md:53 +msgid "Fix Some cards in learning were not shown at the right time (Only if you undo/bury/suspend/reset/reschedule and the next card goes to learning mode)" +msgstr "" + +#: src/changelog/v2.13.md:54 +msgid "Fix Selected deck has translucent background if a deck picker background is set" +msgstr "" + +#: src/changelog/v2.13.md:55 +msgid "Fix Improved preview screens" +msgstr "" + +#: src/changelog/v2.13.md:56 +msgid "Fix Better accessibility in Deck Browser for partially sighted users" +msgstr "" + +#: src/changelog/v2.13.md:57 +msgid "Fix Improve visibility of \"Add/Remove Option Group\"" +msgstr "" + +#: src/changelog/v2.13.md:58 +msgid "Fix Improved messages for sync rate limiting error" +msgstr "" + +#: src/changelog/v2.13.md:59 +msgid "Fix Improved messages for reducing study limits" +msgstr "" + +#: src/changelog/v2.13.md:60 +msgid "Fix Improved messaging when collection is missing media" +msgstr "" + +#: src/changelog/v2.13.md:61 +msgid "Fix Improve feedback when accessing Debug Info" +msgstr "" + +#: src/changelog/v2.13.md:62 +msgid "Fix Add additional warnings to reschedule dialog" +msgstr "" + +#: src/changelog/v2.13.md:63 +msgid "Fix Whiteboard pen color can be disabled by pressing icon again" +msgstr "" + +#: src/changelog/v2.13.md:64 +msgid "Fix Ensure all menu items in the reviewer can be customized by \"App Bar Buttons\" setting" +msgstr "" + +#: src/changelog/v2.13.md:65 +msgid "Fix Scheduler discrepancy handling early interval on filtered decks" +msgstr "" + +#: src/changelog/v2.13.md:66 +msgid "Fix Exports work when cards are missing media" +msgstr "" + +#: src/changelog/v2.13.md:67 +msgid "Fix Crash due to logging." +msgstr "" + +#: src/changelog/v2.13.md:68 +msgid "Fix Toasts used to show one more card than the number of card actually reviewed during the time box" +msgstr "" + +#: src/changelog/v2.13.md:69 +msgid "Fix Handle newlines properly in Note Editor Preview" +msgstr "" + +#: src/changelog/v2.13.md:70 +msgid "Fix Improve AnkiDroid opening animation" +msgstr "" + +#: src/changelog/v2.13.md:71 +msgid "Fix Show correct answer button when answering via Keyboard" +msgstr "" + +#: src/changelog/v2.13.md:72 +msgid "Fix \"New Cards Added\" Statistic" +msgstr "" + +#: src/changelog/v2.13.md:73 +msgid "Fix Crash when inserting a cloze when selecting text from right-to-left via keyboard" +msgstr "" + +#: src/changelog/v2.13.md:74 +msgid "Fix \"Show Password\" icon revealing saved password" +msgstr "" + +#: src/changelog/v2.13.md:75 +msgid "Fix Card browser still contains card after the app goes into background" +msgstr "" + +#: src/changelog/v2.13.md:76 +msgid "Fix Daily unbury occurs during sync if necessary" +msgstr "" + +#: src/changelog/v2.13.md:77 +msgid "Fix On big screen, buttons moved during loading" +msgstr "" + +#: src/changelog/v2.13.md:78 +msgid "Translators If some text change because of minor changes (typos) you won't have to translate it again" +msgstr "" + +#: src/changelog/v2.13.md:79 +msgid "Performance improvements (specifically: initial loading of large collection (lot of decks, note type, card type, fields, long templates...), card browser, deck picker startup, next card view, undo, cancelling tasks such as computing a list of card in browser)" +msgstr "" + +#: src/changelog/v2.13.md:80 +msgid "Dev: Massive dev workflow improvements and automated checks for our translations." +msgstr "" + +#: src/changelog/v2.13.md:81 +msgid "Dev: Implement backend for CSV Importer" +msgstr "" + +#: src/changelog/v2.13.md:82 +msgid "Dev: Improve crash reporting on app startup" +msgstr "" + +#: src/changelog/v2.13.md:83 +msgid "Dev: Massive improvement in testing, especially around scheduler / card queue behavior" +msgstr "" + +#: src/changelog/v2.13.md:84 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/27?closed=1)" +msgstr "" + +#: src/changelog/v2.12.md:1 +msgid "Version 2.12.1 (2020-07-21)" +msgstr "" + +#: src/changelog/v2.12.md:2 +msgid "Fix bug previewing edited notes after changing field count" +msgstr "" + +#: src/changelog/v2.12.md:3 +msgid "Fix crash previewing edited notes from dynamic decks" +msgstr "" + +#: src/changelog/v2.12.md:4 +msgid "Fix crash restarting app after a crash" +msgstr "" + +#: src/changelog/v2.12.md:5 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/28?closed=1)" +msgstr "" + +#: src/changelog/v2.12.md:7 +msgid "Version 2.12.0 (2020-07-18)" +msgstr "" + +#: src/changelog/v2.12.md:8 +msgid "Add Crop image feature" +msgstr "" + +#: src/changelog/v2.12.md:9 +msgid "Add Preview in note editor" +msgstr "" + +#: src/changelog/v2.12.md:10 +msgid "Add edit tags in reviewer" +msgstr "" + +#: src/changelog/v2.12.md:11 +msgid "Add volume buttons as gestures" +msgstr "" + +#: src/changelog/v2.12.md:12 +msgid "Add whiteboard pen color" +msgstr "" + +#: src/changelog/v2.12.md:13 +msgid "Add microphone tool bar in reviewer" +msgstr "" + +#: src/changelog/v2.12.md:14 +msgid "Add javascript API (check the Wiki!)" +msgstr "" + +#: src/changelog/v2.12.md:15 +msgid "Improve: app is 3MB smaller" +msgstr "" + +#: src/changelog/v2.12.md:16 +msgid "Fix: show whole tag in tags dialog" +msgstr "" + +#: src/changelog/v2.12.md:17 +msgid "Fix copy note copies tags too" +msgstr "" + +#: src/changelog/v2.12.md:18 +msgid "Fix data corruption canceling template edits" +msgstr "" + +#: src/changelog/v2.12.md:19 +msgid "performance and bug fixes everywhere!" +msgstr "" + +#: src/changelog/v2.12.md:21 +msgid "11 volunteers made hundreds of individual changes this release" +msgstr "" + +#: src/changelog/v2.12.md:23 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/18?closed=1)" +msgstr "" + +#: src/changelog/v2.11.md:1 +msgid "Version 2.11.3 (2020-06-17)" +msgstr "" + +#: src/changelog/v2.11.md:2 +msgid "Fix out-of-memory errors when importing very large decks" +msgstr "" + +#: src/changelog/v2.11.md:3 +msgid "Fix incorrect out-of-space message on import in Android 4" +msgstr "" + +#: src/changelog/v2.11.md:4 +msgid "Fix crash if card viewer closed quickly after view" +msgstr "" + +#: src/changelog/v2.11.md:5 +msgid "Fix unzip fail on .apkg files >2GB" +msgstr "" + +#: src/changelog/v2.11.md:6 +msgid "Fix crash on edit note in browser multi-select" +msgstr "" + +#: src/changelog/v2.11.md:8 +msgid "Version 2.11.2 (2020-06-10)" +msgstr "" + +#: src/changelog/v2.11.md:9 +msgid "Add santali language" +msgstr "" + +#: src/changelog/v2.11.md:10 +msgid "Fix Hebrew, Indonesian, Tagalog languages" +msgstr "" + +#: src/changelog/v2.11.md:11 +msgid "Improve error reporting around apkg import failures" +msgstr "" + +#: src/changelog/v2.11.md:12 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/24?closed=1)" +msgstr "" + +#: src/changelog/v2.11.md:14 +msgid "Version 2.11.1 (2020-06-08)" +msgstr "" + +#: src/changelog/v2.11.md:15 +msgid "Fix crash in Card Browser multi-select mode" +msgstr "" + +#: src/changelog/v2.11.md:16 +msgid "Fix Custom Steps interval dialog space entry issue" +msgstr "" + +#: src/changelog/v2.11.md:17 +msgid "Fix flags don't export with deck" +msgstr "" + +#: src/changelog/v2.11.md:18 +msgid "Fix AnkiDroid API doesn't handle null model id (Anki Compatibility workaround)" +msgstr "" + +#: src/changelog/v2.11.md:19 +msgid "Fix translation crash in sync dialog in Azerbaijani" +msgstr "" + +#: src/changelog/v2.11.md:20 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/23?closed=1)" +msgstr "" + +#: src/changelog/v2.11.md:22 +msgid "Version 2.11.0 (2020-06-05)" +msgstr "" + +#: src/changelog/v2.11.md:23 +msgid "Android minimum supported version is now 4.1 / Jelly Bean / API16 (AnkiWeb Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:24 +msgid "Change sibling burying should default to off (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:25 +msgid "Change learn cards do not go in filtered decks in v1 sched (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:26 +msgid "Add Browser Appearance screen, to edit Card Browser render format (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:27 +msgid "Add guidance in Note Editor if no cards will be generated despite full fields" +msgstr "" + +#: src/changelog/v2.11.md:28 +msgid "Add all translations from our crowdin.com translation site" +msgstr "" + +#: src/changelog/v2.11.md:29 +msgid "Add ability to decrease daily limit in custom study (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:30 +msgid "Add ability to block gesture handling when tapping hints in Reviewer" +msgstr "" + +#: src/changelog/v2.11.md:31 +msgid "Add create subdeck option in deck list long-press context menu" +msgstr "" + +#: src/changelog/v2.11.md:32 +msgid "Add edit note action in Card Browser multi-select mode" +msgstr "" + +#: src/changelog/v2.11.md:33 +msgid "Add ability to turn off 'Card Browser' system text context menu item" +msgstr "" + +#: src/changelog/v2.11.md:34 +msgid "Add nightMode CSS selector for card HTML (Anki Compatibility)" +msgstr "" + +#: src/changelog/v2.11.md:35 +msgid "Add ability to change just the case of a deck name" +msgstr "" + +#: src/changelog/v2.11.md:36 +msgid "Add page-up/page-down gestures" +msgstr "" + +#: src/changelog/v2.11.md:37 +msgid "Improve gesture handling in full-screen / immersive mode" +msgstr "" + +#: src/changelog/v2.11.md:38 +msgid "Improve handling of cloze deletion in TTS mode" +msgstr "" + +#: src/changelog/v2.11.md:39 +msgid "Improve Card Browser search from Android text selection menu" +msgstr "" + +#: src/changelog/v2.11.md:40 +msgid "Improve Card Browser with default hide of media filenames" +msgstr "" + +#: src/changelog/v2.11.md:41 +msgid "Improve Reviewer auto-advance by waiting for TTS to finish" +msgstr "" + +#: src/changelog/v2.11.md:42 +msgid "Improve transparent SVG display in night mode with white background" +msgstr "" + +#: src/changelog/v2.11.md:43 +msgid "Improve anki package import handling" +msgstr "" + +#: src/changelog/v2.11.md:44 +msgid "Improve AnkiWeb login form enter button handling" +msgstr "" + +#: src/changelog/v2.11.md:45 +msgid "Improve hardware back button handling in restore from backup" +msgstr "" + +#: src/changelog/v2.11.md:46 +msgid "Improve Reviewer display of un-rendered LaTeX" +msgstr "" + +#: src/changelog/v2.11.md:47 +msgid "Improve TTS / auto-answer combination, wait for TTS before advance" +msgstr "" + +#: src/changelog/v2.11.md:48 +msgid "Workaround Firefox open downloaded deck bug" +msgstr "" + +#: src/changelog/v2.11.md:49 +msgid "Workaround crash on Samsung devices with >500 deck reminders" +msgstr "" + +#: src/changelog/v2.11.md:50 +msgid "Fix card template editor mistakenly allowing add template on cloze type" +msgstr "" + +#: src/changelog/v2.11.md:51 +msgid "Fix language change preference" +msgstr "" + +#: src/changelog/v2.11.md:52 +msgid "Fix ability to unbury a deck in deck list" +msgstr "" + +#: src/changelog/v2.11.md:53 +msgid "Fix app bar item flicker during review" +msgstr "" + +#: src/changelog/v2.11.md:54 +msgid "Fix V2 scheduler learning card count after undo" +msgstr "" + +#: src/changelog/v2.11.md:55 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/13?closed=1)" +msgstr "" + +#: src/changelog/v2.10.md:1 +msgid "Version 2.10.4 (2020-05-31)" +msgstr "" + +#: src/changelog/v2.10.md:2 +msgid "Workaround expired AnkiWeb SSL Root certificate" +msgstr "" + +#: src/changelog/v2.10.md:3 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/22?closed=1)" +msgstr "" + +#: src/changelog/v2.10.md:5 +msgid "Version 2.10.3 (2020-05-29)" +msgstr "" + +#: src/changelog/v2.10.md:6 +msgid "Fix crash on no permissions on Card Browser system text menu entry" +msgstr "" + +#: src/changelog/v2.10.md:7 +msgid "Fix crash in widget if external storage unmounts" +msgstr "" + +#: src/changelog/v2.10.md:8 +msgid "Fix crash on device reboot if no permissions" +msgstr "" + +#: src/changelog/v2.10.md:9 +msgid "Fix crash if deck picker background image too large" +msgstr "" + +#: src/changelog/v2.10.md:10 +msgid "Fix crash in tags dialog" +msgstr "" + +#: src/changelog/v2.10.md:11 +msgid "Fix bad data generated for null objects (Anki compatibility)" +msgstr "" + +#: src/changelog/v2.10.md:12 +msgid "[Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/21?closed=1)" +msgstr "" + +#: src/changelog/v2.10.md:14 +msgid "Version 2.10.2 (2020-05-14)" +msgstr "" + +#: src/changelog/v2.10.md:15 +msgid "Fix type answer cards not rendering correctly" +msgstr "" + +#: src/changelog/v2.10.md:16 +msgid "Fix type answer card template creation on non-English new installs" +msgstr "" + +#: src/changelog/v2.10.md:17 +msgid "Fix frequent full sync caused by incorrect learning card counts" +msgstr "" + +#: src/changelog/v2.10.md:18 +msgid "Fix crash importing into fresh install with no storage permission" +msgstr "" + +#: src/changelog/v2.10.md:20 +msgid "Version 2.10.1 (2020-05-13)" +msgstr "" + +#: src/changelog/v2.10.md:21 +msgid "Updated all translations from crowdin translators" +msgstr "" + +#: src/changelog/v2.10.md:22 +msgid "Fix crash note editor on rapid back button" +msgstr "" + +#: src/changelog/v2.10.md:23 +msgid "Fix crash from incorrect Thai translation" +msgstr "" + +#: src/changelog/v2.10.md:25 +msgid "Version 2.10 (2020-05-12)" +msgstr "" + +#: src/changelog/v2.10.md:26 +msgid "Add welcome dialog explaining need for storage permission" +msgstr "" + +#: src/changelog/v2.10.md:27 +msgid "Add support for Flags on cards (including flagging by gesture)" +msgstr "" + +#: src/changelog/v2.10.md:28 +msgid "Add ability to set background image in Deck Picker" +msgstr "" + +#: src/changelog/v2.10.md:29 +msgid "Add localization of standard templates created in fresh install" +msgstr "" + +#: src/changelog/v2.10.md:30 +msgid "Add support for card javascript to reload current card programmatically" +msgstr "" + +#: src/changelog/v2.10.md:31 +msgid "Add support for restricted learning / classroom devices" +msgstr "" + +#: src/changelog/v2.10.md:32 +msgid "Add preference to disable \"Extended Text UI\" full-screen editor" +msgstr "" + +#: src/changelog/v2.10.md:33 +msgid "Add CSS style capability to heavy checkmark and down arrow in card" +msgstr "" + +#: src/changelog/v2.10.md:34 +msgid "Add display of current interval on reschedule dialog" +msgstr "" + +#: src/changelog/v2.10.md:35 +msgid "Add support for card javascript to answer cards programmatically" +msgstr "" + +#: src/changelog/v2.10.md:36 +msgid "Add ability to toggle sticky field in field editor" +msgstr "" + +#: src/changelog/v2.10.md:37 +msgid "Improve deck list newline, style, script tag handling in deck descriptions" +msgstr "" + +#: src/changelog/v2.10.md:38 +msgid "Improve whiteboard on/off state handling, especially between day/night mode" +msgstr "" + +#: src/changelog/v2.10.md:39 +msgid "Improve multi-selection options in CardBrowser" +msgstr "" + +#: src/changelog/v2.10.md:40 +msgid "Improve performance (systematic optimization process, lots of improvements!)" +msgstr "" + +#: src/changelog/v2.10.md:41 +msgid "Improve handling of erroneous notes (missing fields, improper clozes)" +msgstr "" + +#: src/changelog/v2.10.md:42 +msgid "Improve user messaging on network connection failures" +msgstr "" + +#: src/changelog/v2.10.md:43 +msgid "Improve counting of suspended/buried cards in advanced statistics" +msgstr "" + +#: src/changelog/v2.10.md:44 +msgid "Improve v2 scheduler compatibility with Anki ecosystem" +msgstr "" + +#: src/changelog/v2.10.md:45 +msgid "Improve handling / detection of full sync need" +msgstr "" + +#: src/changelog/v2.10.md:46 +msgid "Improve Anki compatibility by allowing more field/model/deck name characters" +msgstr "" + +#: src/changelog/v2.10.md:47 +msgid "Improve deck list estimated review times with human scale times" +msgstr "" + +#: src/changelog/v2.10.md:48 +msgid "Fix text scaling bug in card browser" +msgstr "" + +#: src/changelog/v2.10.md:49 +msgid "Fix crash in export while using v2 scheduler" +msgstr "" + +#: src/changelog/v2.10.md:50 +msgid "Fix Custom Tabs crash with non-default system web browser" +msgstr "" + +#: src/changelog/v2.10.md:51 +msgid "Fix issues with import of packages with long Unicode names" +msgstr "" + +#: src/changelog/v2.10.md:52 +msgid "Fix incorrect intervals on lapsed filtered v2 scheduler cards" +msgstr "" + +#: src/changelog/v2.10.md:53 +msgid "Fix multimedia editor save/cancel behavior" +msgstr "" + +#: src/changelog/v2.10.md:54 +msgid "Fix incorrect button/gesture availability while existing task is still active" +msgstr "" + +#: src/changelog/v2.10.md:55 +msgid "Fix type answer crash on invalid characters" +msgstr "" + +#: src/changelog/v2.10.md:56 +msgid "Fix cloze references not being recognized in all fields" +msgstr "" + +#: src/changelog/v2.10.md:57 +msgid "Fix invalid ability to change deck to a filtered deck" +msgstr "" + +#: src/changelog/v2.10.md:58 +msgid "Fix crashes on adding invalid images, audios, and videos" +msgstr "" + +#: src/changelog/v2.10.md:59 +msgid "Fix CardBrowser crash after deleting card" +msgstr "" + +#: src/changelog/v2.10.md:60 +msgid "Fix crash and help user if no browser detected" +msgstr "" + +#: src/changelog/v2.10.md:61 +msgid "Fix Reviewer crash if card not available" +msgstr "" + +#: src/changelog/v2.10.md:62 +msgid "Fix crash / improve import of pasted decks" +msgstr "" + +#: src/changelog/v2.10.md:63 +msgid "Fix clicking hint field blocks key input in Reviewer" +msgstr "" + +#: src/changelog/v2.10.md:64 +msgid "Fix Previewer forgetting which card to show on device rotation" +msgstr "" + +#: src/changelog/v2.10.md:65 +msgid "Fix Mathjax/cloze interactions" +msgstr "" + +#: src/changelog/v2.10.md:66 +msgid "Fix vertical alignment of touch area in full-screen review" +msgstr "" + +#: src/changelog/v2.10.md:67 +msgid "Fix handling of ':::' in deck names" +msgstr "" + +#: src/changelog/v2.10.md:68 +msgid "Fix incorrect display of HTML comments in card browser" +msgstr "" + +#: src/changelog/v2.9.md:1 +msgid "Version 2.9.7 (2020-04-30)" +msgstr "" + +#: src/changelog/v2.9.md:2 +msgid "Fix crash / workaround deck options timer config regression in AnkiDesktop" +msgstr "" + +#: src/changelog/v2.9.md:4 +msgid "Version 2.9.6 (2020-04-03)" +msgstr "" + +#: src/changelog/v2.9.md:5 +msgid "Fix multimedia crashes (permissions handling, image add, preview)" +msgstr "" + +#: src/changelog/v2.9.md:6 +msgid "Fix UI and crashes in database check (user dialog + exception handling)" +msgstr "" + +#: src/changelog/v2.9.md:7 +msgid "Fix Windows 10 image compatibility issue with image paths" +msgstr "" + +#: src/changelog/v2.9.md:8 +msgid "Fix AnkiDesktop sync compatibility issue if more than 1000 cards due" +msgstr "" + +#: src/changelog/v2.9.md:9 +msgid "Fix crash in card browser render" +msgstr "" + +#: src/changelog/v2.9.md:10 +msgid "Fix parsing of image tags in card browser" +msgstr "" + +#: src/changelog/v2.9.md:11 +msgid "Fix crash in StudyOptionsFragment" +msgstr "" + +#: src/changelog/v2.9.md:12 +msgid "Fix issue with deck options group changing on export" +msgstr "" + +#: src/changelog/v2.9.md:13 +msgid "Fix issue with exports containing unexpected media" +msgstr "" + +#: src/changelog/v2.9.md:14 +msgid "Fix issue with dynamic decks (crash fix, export fix)" +msgstr "" + +#: src/changelog/v2.9.md:15 +msgid "Fix high frequency issue \"AnkiDroid directory is inaccessible\"" +msgstr "" + +#: src/changelog/v2.9.md:16 +msgid "Fix high frequency WebView (card viewer) crash" +msgstr "" + +#: src/changelog/v2.9.md:17 +msgid "Add columns to card browser (due, ease, changed, created, edited)" +msgstr "" + +#: src/changelog/v2.9.md:18 +msgid "Fix card scheduler not respecting maximum intervals" +msgstr "" + +#: src/changelog/v2.9.md:19 +msgid "Fix card browser spins forever on images or empty strings" +msgstr "" + +#: src/changelog/v2.9.md:21 +msgid "Version 2.9.5 (2020-03-15)" +msgstr "" + +#: src/changelog/v2.9.md:22 +msgid "Fix crash rendering card list while updating card browser search" +msgstr "" + +#: src/changelog/v2.9.md:23 +msgid "Fix case-sensitivity issue with pronunciation words not being found" +msgstr "" + +#: src/changelog/v2.9.md:24 +msgid "Fix crash caused by auto-sync on startup showing dialog too soon" +msgstr "" + +#: src/changelog/v2.9.md:25 +msgid "Fix crash on preview of TTS cards showing language selectiond dialog too slowly" +msgstr "" + +#: src/changelog/v2.9.md:26 +msgid "Fix crash on import if collection not found" +msgstr "" + +#: src/changelog/v2.9.md:27 +msgid "Fix Anki ecosystem deck configuration issue for Anki Desktop users \\<= 2.16" +msgstr "" + +#: src/changelog/v2.9.md:28 +msgid "Fix crash if user attempts to open camera or gallery and no app is available" +msgstr "" + +#: src/changelog/v2.9.md:29 +msgid "Fix crash building deck reminders while deck is synchronizing" +msgstr "" + +#: src/changelog/v2.9.md:30 +msgid "Fix crash related to audio recording stop" +msgstr "" + +#: src/changelog/v2.9.md:31 +msgid "Show helpful messages if import fails because device is out of space" +msgstr "" + +#: src/changelog/v2.9.md:32 +msgid "Fix crash when taking pictures on devices with Lollipop and older" +msgstr "" + +#: src/changelog/v2.9.md:34 +msgid "Version 2.9.4 (2020-02-18)" +msgstr "" + +#: src/changelog/v2.9.md:35 +msgid "Fix crash when fetching pronunciations in note editor" +msgstr "" + +#: src/changelog/v2.9.md:36 +msgid "Fix issue with pronunciation words not being found" +msgstr "" + +#: src/changelog/v2.9.md:37 +msgid "Fix crash on startup for users with auto-sync on startup" +msgstr "" + +#: src/changelog/v2.9.md:38 +msgid "Fix crash on deck import when app is in background" +msgstr "" + +#: src/changelog/v2.9.md:39 +msgid "Fix crash for users of Google Chrome Canary" +msgstr "" + +#: src/changelog/v2.9.md:40 +msgid "Fix crash when adding certain audio clips" +msgstr "" + +#: src/changelog/v2.9.md:41 +msgid "Fix crash related to fetching Sound metadata" +msgstr "" + +#: src/changelog/v2.9.md:42 +msgid "Fix issue where audio plays twice" +msgstr "" + +#: src/changelog/v2.9.md:44 +msgid "Version 2.9.3 (2020-02-09)" +msgstr "" + +#: src/changelog/v2.9.md:45 +msgid "Fix issues with connection timeouts and new encryption library" +msgstr "" + +#: src/changelog/v2.9.md:46 +msgid "Fix incorrect handling of decks with ':::' in their name" +msgstr "" + +#: src/changelog/v2.9.md:48 +msgid "Version 2.9.2 (2020-02-03)" +msgstr "" + +#: src/changelog/v2.9.md:49 +msgid "Add support for new AnkiWeb encryption changes" +msgstr "" + +#: src/changelog/v2.9.md:50 +msgid "Fix some bugs using filtered decks" +msgstr "" + +#: src/changelog/v2.9.md:51 +msgid "Fix crash on app startup with uninitialized collection" +msgstr "" + +#: src/changelog/v2.9.md:52 +msgid "Fix some issues with new cloze deletion menu" +msgstr "" + +#: src/changelog/v2.9.md:53 +msgid "Fix issue with Mathjax + cloze deletion" +msgstr "" + +#: src/changelog/v2.9.md:54 +msgid "Fix incorrect intervals bug with new scheduler" +msgstr "" + +#: src/changelog/v2.9.md:55 +msgid "Add various patches from Anki Desktop" +msgstr "" + +#: src/changelog/v2.9.md:57 +msgid "Version 2.9.1 (2019-10-16)" +msgstr "" + +#: src/changelog/v2.9.md:58 +msgid "Fix crash reviewing on Android 5 - 7" +msgstr "" + +#: src/changelog/v2.9.md:59 +msgid "Fix crash on Hungarian translation" +msgstr "" + +#: src/changelog/v2.9.md:61 +msgid "Version 2.9 (2019-10-14)" +msgstr "" + +#: src/changelog/v2.9.md:62 +msgid "Change to new adaptive icon" +msgstr "" + +#: src/changelog/v2.9.md:63 +msgid "Add multi-select in the card browser (delete, change deck, reschedule)" +msgstr "" + +#: src/changelog/v2.9.md:64 +msgid "Add support for new Anki 2.1 scheduler" +msgstr "" + +#: src/changelog/v2.9.md:65 +msgid "Add support for Mathjax" +msgstr "" + +#: src/changelog/v2.9.md:66 +msgid "Add ability to add local audio files to notes" +msgstr "" + +#: src/changelog/v2.9.md:67 +msgid "Add ability to specify filename and folder on export and import" +msgstr "" + +#: src/changelog/v2.9.md:68 +msgid "Add ability to insert cloze in Note Editor" +msgstr "" + +#: src/changelog/v2.9.md:69 +msgid "Add ability to reposition cards " +msgstr "" + +#: src/changelog/v2.9.md:70 +msgid "Add ability to use due reminders for specific decks" +msgstr "" + +#: src/changelog/v2.9.md:71 +msgid "Add support for gamepad input when reviewing" +msgstr "" + +#: src/changelog/v2.9.md:72 +msgid "Add support for common keyboard shortcuts from Anki Desktop" +msgstr "" + +#: src/changelog/v2.9.md:73 +msgid "Add ability to search in Card Browser for text from system context menu" +msgstr "" + +#: src/changelog/v2.9.md:74 +msgid "Add ability to recognize tts HTML elements in questions and answers" +msgstr "" + +#: src/changelog/v2.9.md:75 +msgid "Add ability to display LaTeX rendered to SVG (vs PNG) from Anki Desktop" +msgstr "" + +#: src/changelog/v2.9.md:76 +msgid "Add confirmation check for full sync trigger in preferences" +msgstr "" + +#: src/changelog/v2.9.md:77 +msgid "Fix excessive pull-to-sync false positives. Disable when not at top of page." +msgstr "" + +#: src/changelog/v2.9.md:78 +msgid "Fix some issues with focus in Note Editor" +msgstr "" + +#: src/changelog/v2.9.md:79 +msgid "Fix media sync errors related to file creation issues" +msgstr "" + +#: src/changelog/v2.9.md:80 +msgid "Fix crash related to use of camera without permission or no camera hardware " +msgstr "" + +#: src/changelog/v2.9.md:81 +msgid "Fix crash related to Card Browser allowing preview with no cards selected" +msgstr "" + +#: src/changelog/v2.9.md:82 +msgid "Fix crash in Reviewer when collection inaccessible" +msgstr "" + +#: src/changelog/v2.9.md:83 +msgid "Fix crash related to TTS when TTS not initialized" +msgstr "" + +#: src/changelog/v2.9.md:84 +msgid "Fix crash related to sdcard mount/unmount on inaccessible collection" +msgstr "" + +#: src/changelog/v2.9.md:85 +msgid "Fix crash related to audio button being visible after loading pronunciation media" +msgstr "" + +#: src/changelog/v2.9.md:86 +msgid "Fix crash when attempting to import invalid zip files " +msgstr "" + +#: src/changelog/v2.9.md:87 +msgid "Fix crash related to switching from split-window mode to single-window mode" +msgstr "" + +#: src/changelog/v2.9.md:88 +msgid "Fix crash related to missing preferences in Preference editor" +msgstr "" + +#: src/changelog/v2.9.md:89 +msgid "Fix crash on deck selection after deleting a deck and immediately closing app" +msgstr "" + +#: src/changelog/v2.9.md:90 +msgid "Fix crash in Reviewer when non-standard browser installed" +msgstr "" + +#: src/changelog/v2.9.md:91 +msgid "Fix type-answer field showing unexpectedly after undo in Reviewer" +msgstr "" + +#: src/changelog/v2.9.md:92 +msgid "Fix incorrect display of some characters when using type-answer" +msgstr "" + +#: src/changelog/v2.9.md:93 +msgid "Fix error related to media in subfolders not showing in Reviewer" +msgstr "" + +#: src/changelog/v2.9.md:94 +msgid "Fix some issues with generated flashcard html and CSS selectors" +msgstr "" + +#: src/changelog/v2.9.md:95 +msgid "Fix some Glosbe and Beolingus regressions" +msgstr "" + +#: src/changelog/v2.9.md:96 +msgid "Fix issue where new deck was created when note type was renamed" +msgstr "" + +#: src/changelog/v2.9.md:97 +msgid "Fix add note button disappearing from Card Browser when returning from search" +msgstr "" + +#: src/changelog/v2.9.md:98 +msgid "Fix some statistics display issues " +msgstr "" + +#: src/changelog/v2.9.md:99 +msgid "Fix incorrect display of some preferences" +msgstr "" + +#: src/changelog/v2.9.md:100 +msgid "Fix invisible notification bar in NoteEditor" +msgstr "" + +#: src/changelog/v2.9.md:101 +msgid "Fix newline characters not working in cloze deletions" +msgstr "" + +#: src/changelog/v2.9.md:102 +msgid "Increase max card count display from 1000 to 99999" +msgstr "" + +#: src/changelog/v2.9.md:103 +msgid "Improve display handling of very long review intervals (> 68 years)" +msgstr "" + +#: src/changelog/v2.9.md:104 +msgid "Improve next/back buttons when using Previewer on multiple cards" +msgstr "" + +#: src/changelog/v2.9.md:105 +msgid "Improve handling of selected deck between statistics, card browser and deck picker" +msgstr "" + +#: src/changelog/v2.9.md:106 +msgid "Improve Card Browser search by restoring when returning from other activities" +msgstr "" + +#: src/changelog/v2.9.md:107 +msgid "Improve card focus handling when moving between Note Editor and Card Template Editor" +msgstr "" + +#: src/changelog/v2.9.md:108 +msgid "Improve labeling of deck-group vs deck-specific options" +msgstr "" + +#: src/changelog/v2.9.md:109 +msgid "Improve formatting of HTTP error codes during sync" +msgstr "" + +#: src/changelog/v2.9.md:110 +msgid "Improve handling of multi-touch events while whiteboard displayed" +msgstr "" + +#: src/changelog/v2.9.md:111 +msgid "Improve permission dialog descriptions" +msgstr "" + +#: src/changelog/v2.9.md:112 +msgid "Improve handling of \"preview new cards\" setting when creating custom study deck" +msgstr "" + +#: src/changelog/v2.9.md:113 +msgid "Improve Navigation Drawer performance on older devices" +msgstr "" + +#: src/changelog/v2.9.md:114 +msgid "Improve database check dialog with addition progress updates during check" +msgstr "" + +#: src/changelog/v2.9.md:115 +msgid "Use different notification channels for study reminders and general notifications" +msgstr "" + +#: src/changelog/v2.9.md:116 +msgid "Drop support for Android \\< Ice Cream Sandwich MR1 (API15, Android 4.0.3)" +msgstr "" + +#: src/changelog/v2.9.md:117 +msgid "Add support for more features on Chromebook (import, export, restore backup, camera)" +msgstr "" + +#: src/changelog/v2.9.md:118 +msgid "Add API support for card/note bury and suspend" +msgstr "" + +#: src/changelog/v2.9.md:119 +msgid "Add API to open Reviewer on specific decks from other apps" +msgstr "" + +#: src/changelog/v2.9.md:120 +msgid "Add support for HTML/Javascript debugging" +msgstr "" + +#: src/changelog/v2.9.md:121 +msgid "Add link to third party apps which support AnkiDroid API in advanced preferences" +msgstr "" + +#: src/changelog/v2.9.md:122 +msgid "Fix issue with custom sync server certificates" +msgstr "" + +#: src/changelog/v2.9.md:123 +msgid "Perform basic DB integrity check on app upgrade" +msgstr "" + +#: src/changelog/v2.9.md:124 +msgid "Introduce optional analytics reporting" +msgstr "" + +#: src/changelog/v2.8.md:1 +msgid "Version 2.8.4 (2018-04-27)" +msgstr "" + +#: src/changelog/v2.8.md:2 +msgid "Fix error syncing due to too many card templates" +msgstr "" + +#: src/changelog/v2.8.md:4 +msgid "Version 2.8.3 (2017-11-10)" +msgstr "" + +#: src/changelog/v2.8.md:5 +msgid "Fix crash adding a picture from camera" +msgstr "" + +#: src/changelog/v2.8.md:6 +msgid "Fix add note icon disappearing in browser after search" +msgstr "" + +#: src/changelog/v2.8.md:7 +msgid "Fix translations from Glosbe" +msgstr "" + +#: src/changelog/v2.8.md:8 +msgid "Fix crash long-tapping when no deck is selected" +msgstr "" + +#: src/changelog/v2.8.md:9 +msgid "Fix crash entering advanced settings on some devices" +msgstr "" + +#: src/changelog/v2.8.md:10 +msgid "Fix incorrect graph display in statistics" +msgstr "" + +#: src/changelog/v2.8.md:11 +msgid "Fix deck not changing properly in statistics" +msgstr "" + +#: src/changelog/v2.8.md:12 +msgid "Fix rounding error in statistics weekly breakdown" +msgstr "" + +#: src/changelog/v2.8.md:13 +msgid "Fix spurious new deck created on model rename" +msgstr "" + +#: src/changelog/v2.8.md:14 +msgid "Improve error message on exception during media sync" +msgstr "" + +#: src/changelog/v2.8.md:15 +msgid "Improve animation when transitioning between screens" +msgstr "" + +#: src/changelog/v2.8.md:16 +msgid "Use a round icon on devices that support it" +msgstr "" + +#: src/changelog/v2.8.md:18 +msgid "Version 2.8.2 (2017-02-28)" +msgstr "" + +#: src/changelog/v2.8.md:19 +msgid "Fix bugs showing confirmation dialogs in various places" +msgstr "" + +#: src/changelog/v2.8.md:20 +msgid "Fix uncommon crash showing dialog after sync" +msgstr "" + +#: src/changelog/v2.8.md:22 +msgid "Version 2.8.1 (2017-02-06)" +msgstr "" + +#: src/changelog/v2.8.md:23 +msgid "Allow sending exported apkg to arbitrary app (e.g. Google Drive)" +msgstr "" + +#: src/changelog/v2.8.md:24 +msgid "Allow AnkiWeb to display a warning on sync completion" +msgstr "" + +#: src/changelog/v2.8.md:25 +msgid "Fix potential full-sync after sync cancellation" +msgstr "" + +#: src/changelog/v2.8.md:26 +msgid "Fix media sync sometimes scanning all files again" +msgstr "" + +#: src/changelog/v2.8.md:27 +msgid "Fix removing $ character when importing media files" +msgstr "" + +#: src/changelog/v2.8.md:28 +msgid "Improve automatic card answer timing when audio is played" +msgstr "" + +#: src/changelog/v2.8.md:29 +msgid "Improve rendering of some statistics" +msgstr "" + +#: src/changelog/v2.8.md:30 +msgid "Fix some crashes in the Russian, Vietnamese, and Chinese translations" +msgstr "" + +#: src/changelog/v2.8.md:31 +msgid "Fix crash sending exported apkg by email. NB: Export path can no longer be modified." +msgstr "" + +#: src/changelog/v2.7.md:1 +msgid "Version 2.7 (2016-10-16)" +msgstr "" + +#: src/changelog/v2.7.md:2 +msgid "Add pull-to-sync feature" +msgstr "" + +#: src/changelog/v2.7.md:3 +msgid "Add option to place answer buttons at the top" +msgstr "" + +#: src/changelog/v2.7.md:4 +msgid "Add widget to directly access \"Add note\" screen" +msgstr "" + +#: src/changelog/v2.7.md:5 +msgid "Fix issue with importing whole collections and restoring backups" +msgstr "" + +#: src/changelog/v2.7.md:6 +msgid "Fix deck import failing after the first successful one" +msgstr "" + +#: src/changelog/v2.7.md:7 +msgid "Fix cards in learning queue not being randomized" +msgstr "" + +#: src/changelog/v2.7.md:8 +msgid "Fix crash with fullscreen mode and hidden answer buttons" +msgstr "" + +#: src/changelog/v2.7.md:9 +msgid "Fix rare crash when opening deck options" +msgstr "" + +#: src/changelog/v2.7.md:10 +msgid "Improve support with TalkBack" +msgstr "" + +#: src/changelog/v2.6.md:1 +msgid "Version 2.6.1 (2016-07-08)" +msgstr "" + +#: src/changelog/v2.6.md:2 +msgid "Add card cycling in previewer (similar to desktop client)" +msgstr "" + +#: src/changelog/v2.6.md:3 +msgid "Add option to hide 'minutes left' in reviewer" +msgstr "" + +#: src/changelog/v2.6.md:4 +msgid "Fix language from app setting not always being used" +msgstr "" + +#: src/changelog/v2.6.md:5 +msgid "Fix not being able to play back new sound recording" +msgstr "" + +#: src/changelog/v2.6.md:6 +msgid "Fix potential crash on Android 2.3 (Gingerbread)" +msgstr "" + +#: src/changelog/v2.6.md:7 +msgid "Improved use of horizontal space when resizing large images" +msgstr "" + +#: src/changelog/v2.6.md:8 +msgid "Minor adjustment to black theme colors" +msgstr "" + +#: src/changelog/v2.6.md:10 +msgid "Version 2.6 (2016-06-14)" +msgstr "" + +#: src/changelog/v2.6.md:11 +msgid "Add two new themes (black, plain), selectable in preferences" +msgstr "" + +#: src/changelog/v2.6.md:12 +msgid "Make reviewer app bar icons customizable" +msgstr "" + +#: src/changelog/v2.6.md:13 +msgid "Split \"hide / delete\" menu in reviewer into \"bury\", \"suspend\", \"delete note\"" +msgstr "" + +#: src/changelog/v2.6.md:14 +msgid "Reviewer undo button now removes last stroke when whiteboard in use" +msgstr "" + +#: src/changelog/v2.6.md:15 +msgid "Add menu entry to change TTS language from reviewer" +msgstr "" + +#: src/changelog/v2.6.md:16 +msgid "Add more of the statistics available on the desktop client" +msgstr "" + +#: src/changelog/v2.6.md:17 +msgid "Add \"advanced statistics\" plugin (must be enabled in advanced settings)" +msgstr "" + +#: src/changelog/v2.6.md:18 +msgid "Add setting to configure custom sync server (advanced)" +msgstr "" + +#: src/changelog/v2.6.md:19 +msgid "Fix card templates created in AnkiDroid incorrectly using bold style" +msgstr "" + +#: src/changelog/v2.6.md:20 +msgid "Fix many importing issues (behavior now consistent with the desktop client)" +msgstr "" + +#: src/changelog/v2.6.md:21 +msgid "Fix long-tapping card in browser not always working" +msgstr "" + +#: src/changelog/v2.6.md:22 +msgid "Update sound playback button image" +msgstr "" + +#: src/changelog/v2.6.md:23 +msgid "Reduce size of whiteboard and gesture area for better interoperability with full screen" +msgstr "" + +#: src/changelog/v2.6.md:24 +msgid "Improve error messages with inaccessible collections" +msgstr "" + +#: src/changelog/v2.6.md:25 +msgid "Allow auto-play of HTML media elements (for templates that enable it)" +msgstr "" + +#: src/changelog/v2.6.md:26 +msgid "Significant updates to the content provider and API (for developers; see documentation)" +msgstr "" + +#: src/changelog/v2.6.md:27 +msgid "Many small bug fixes, improvements, theme adjustments, translation updates" +msgstr "" + +#: src/changelog/v2.5.md:1 +msgid "Version 2.5.4 (2015-12-14)" +msgstr "" + +#: src/changelog/v2.5.md:2 +msgid "Fix background color in overflow menu of deck picker" +msgstr "" + +#: src/changelog/v2.5.md:4 +msgid "Version 2.5.3 (2015-12-14)" +msgstr "" + +#: src/changelog/v2.5.md:5 +msgid "Fix floating action button (blue +) interfering with deck list on Android 2.3" +msgstr "" + +#: src/changelog/v2.5.md:6 +msgid "Fix opening apkg files from Gmail" +msgstr "" + +#: src/changelog/v2.5.md:7 +msgid "Fix automatic playback of consecutive videos" +msgstr "" + +#: src/changelog/v2.5.md:8 +msgid "Add a new launch screen" +msgstr "" + +#: src/changelog/v2.5.md:9 +msgid "Improve behaviour surrounding the deck overview screen" +msgstr "" + +#: src/changelog/v2.5.md:10 +msgid "Multiple media files can now be added to one field in the note editor" +msgstr "" + +#: src/changelog/v2.5.md:11 +msgid "Don't include unused media files on export" +msgstr "" + +#: src/changelog/v2.5.md:12 +msgid "Undo behaviour is now consistent with the desktop client (can no longer undo note edits)" +msgstr "" + +#: src/changelog/v2.5.md:13 +msgid "Enhancements to sync canceling" +msgstr "" + +#: src/changelog/v2.5.md:14 +msgid "Minor performance enhancements, crash fixes, and UI tweaks" +msgstr "" + +#: src/changelog/v2.5.md:16 +msgid "Version 2.5.2 (2015-12-04)" +msgstr "" + +#: src/changelog/v2.5.md:17 +msgid "Fix start-up crashes on Samsung devices running Android 4.2" +msgstr "" + +#: src/changelog/v2.5.md:18 +msgid "Fix crash for new users on Android 6.0" +msgstr "" + +#: src/changelog/v2.5.md:19 +msgid "Reverted to old typing method. The new method is now an option which is off by default." +msgstr "" + +#: src/changelog/v2.5.md:20 +msgid "You can now click on the numbers in the right-most part of the deck list to open the deck overview screen" +msgstr "" + +#: src/changelog/v2.5.md:21 +msgid "Various fixes to transition animations and progress bars" +msgstr "" + +#: src/changelog/v2.5.md:22 +msgid "Add option to remove empty cards (previously only possible on desktop)" +msgstr "" + +#: src/changelog/v2.5.md:23 +msgid "Remove: Google Translate filter. In practice, this feature had no effect and is not required" +msgstr "" + +#: src/changelog/v2.5.md:24 +msgid "Remove: Google image search for multimedia card. The image search API has been discontinued by Google and no longer works" +msgstr "" + +#: src/changelog/v2.5.md:26 +msgid "Version 2.5.1 (2015-12-01)" +msgstr "" + +#: src/changelog/v2.5.md:27 +msgid "Fix crash when loading deck list (could not open collection bug)" +msgstr "" + +#: src/changelog/v2.5.md:28 +msgid "Fix visible progress bar showing when answering card" +msgstr "" + +#: src/changelog/v2.5.md:30 +msgid "Version 2.5 (2015-11-30)" +msgstr "" + +#: src/changelog/v2.5.md:31 +msgid "Redesign of user interface to use material design" +msgstr "" + +#: src/changelog/v2.5.md:32 +msgid "Add new dark theme" +msgstr "" + +#: src/changelog/v2.5.md:33 +msgid "Simplify the study process by bypassing deck overview screen" +msgstr "" + +#: src/changelog/v2.5.md:34 +msgid "Add ability to add, edit, delete note types" +msgstr "" + +#: src/changelog/v2.5.md:35 +msgid "Add setting to enable auto-sync and a Tasker intent to trigger sync" +msgstr "" + +#: src/changelog/v2.5.md:36 +msgid "Replace \"instant add\" feature with new API for 3rd party apps to add cards directly to AnkiDroid" +msgstr "" + +#: src/changelog/v2.5.md:37 +msgid "\"Type in the answer\" input box now built into the card html itself" +msgstr "" + +#: src/changelog/v2.5.md:38 +msgid "Make fullscreen-mode immersive and added setting to hide answer buttons when using gestures" +msgstr "" + +#: src/changelog/v2.5.md:39 +msgid "Add css class for customizing card background color when night mode is enabled" +msgstr "" + +#: src/changelog/v2.5.md:40 +msgid "Allow changing media volume from the deck picker" +msgstr "" + +#: src/changelog/v2.5.md:41 +msgid "Add ability to save and view common searches in the card browser" +msgstr "" + +#: src/changelog/v2.5.md:42 +msgid "Browser now shows full question and answer in the results by default" +msgstr "" + +#: src/changelog/v2.5.md:43 +msgid "Only show tags relevant to that deck when doing custom study by tag" +msgstr "" + +#: src/changelog/v2.5.md:44 +msgid "Fix some bugs in the widget" +msgstr "" + +#: src/changelog/v2.5.md:45 +msgid "Remove \"simple interface\"" +msgstr "" + +#: src/changelog/v2.5.md:46 +msgid "Remove support for Android version 2.1 and 2.2 (minimum is now 2.3.3)" +msgstr "" + +#: src/changelog/v2.5.md:47 +msgid "Add support for Android 6 Marshmallow" +msgstr "" + +#: src/changelog/v2.5.md:48 +msgid "Disable write-ahead-logging in sqlite database" +msgstr "" + +#: src/changelog/v2.5.md:49 +msgid "Many other bug fixes and small improvements" +msgstr "" + +#: src/changelog/v2.4.md:1 +msgid "Version 2.4.4 (2015-10-20)" +msgstr "" + +#: src/changelog/v2.4.md:2 +msgid "Fix playback of sound files with apostrophes in file name" +msgstr "" + +#: src/changelog/v2.4.md:3 +msgid "Fix new card siblings not being buried for the same day" +msgstr "" + +#: src/changelog/v2.4.md:4 +msgid "Fix media on cards when using the Hebrew Fix option" +msgstr "" + +#: src/changelog/v2.4.md:5 +msgid "Fix crashes related to \"Relative overdueness\" and make this sort order available on AnkiDroid" +msgstr "" + +#: src/changelog/v2.4.md:6 +msgid "When mixing new and review cards, make their rotation more consistent with desktop" +msgstr "" + +#: src/changelog/v2.4.md:8 +msgid "Version 2.4.3 (2015-04-21)" +msgstr "" + +#: src/changelog/v2.4.md:9 +msgid "Fix \"unknown field\" bug" +msgstr "" + +#: src/changelog/v2.4.md:10 +msgid "Fix crash showing welcome screen on Android 2.3" +msgstr "" + +#: src/changelog/v2.4.md:11 +msgid "Fix crash caused by widget" +msgstr "" + +#: src/changelog/v2.4.md:12 +msgid "Fix rare crash in browser" +msgstr "" + +#: src/changelog/v2.4.md:13 +msgid "Fix a couple of sync issues" +msgstr "" + +#: src/changelog/v2.4.md:14 +msgid "Fix crash starting AnkiDroid on a small number of devices" +msgstr "" + +#: src/changelog/v2.4.md:15 src/changelog/v2.4.md:29 +msgid "Update translations" +msgstr "" + +#: src/changelog/v2.4.md:17 +msgid "Version 2.4.2 (2015-03-18)" +msgstr "" + +#: src/changelog/v2.4.md:18 +msgid "Fix some bugs with cloze templates" +msgstr "" + +#: src/changelog/v2.4.md:19 +msgid "Fix a translation error" +msgstr "" + +#: src/changelog/v2.4.md:21 +msgid "Version 2.4.1 (2015-03-15)" +msgstr "" + +#: src/changelog/v2.4.md:22 +msgid "Fix some bugs with filtered decks" +msgstr "" + +#: src/changelog/v2.4.md:23 +msgid "Improve importing of shared decks" +msgstr "" + +#: src/changelog/v2.4.md:24 +msgid "Open settings if AnkiDroid dir inaccessible" +msgstr "" + +#: src/changelog/v2.4.md:25 +msgid "Fix a bug with zooming" +msgstr "" + +#: src/changelog/v2.4.md:26 +msgid "Fix a bug where old card was still shown in reviewer after changing deck" +msgstr "" + +#: src/changelog/v2.4.md:27 +msgid "Fix some issues with cloze deletion" +msgstr "" + +#: src/changelog/v2.4.md:28 +msgid "Fix various crashes" +msgstr "" + +#: src/changelog/v2.4.md:31 +msgid "Version 2.4 (2015-01-28)" +msgstr "" + +#: src/changelog/v2.4.md:32 +msgid "Move \"preview\" feature to browser" +msgstr "" + +#: src/changelog/v2.4.md:33 +msgid "Add ability to change note type of existing flashcards" +msgstr "" + +#: src/changelog/v2.4.md:34 +msgid "Add ability to view and delete card templates" +msgstr "" + +#: src/changelog/v2.4.md:35 +msgid "Fix TTS for most devices" +msgstr "" + +#: src/changelog/v2.4.md:36 +msgid "Support playback of videos (see supported formats [here](http://developer.android.com/guide/appendix/media-formats.html))" +msgstr "" + +#: src/changelog/v2.4.md:37 +msgid "Improve rendering of second column in browser" +msgstr "" + +#: src/changelog/v2.4.md:38 +msgid "Improve detection of swipe gestures" +msgstr "" + +#: src/changelog/v2.4.md:39 +msgid "Increase number of languages in Glosbe translator" +msgstr "" + +#: src/changelog/v2.4.md:40 +msgid "Add support for Chromebooks" +msgstr "" + +#: src/changelog/v2.4.md:41 +msgid "New crash report system" +msgstr "" + +#: src/changelog/v2.4.md:42 +msgid "Bug fixes" +msgstr "" + +#: src/changelog/v2.3.md:1 +msgid "Version 2.3.2 (2014-11-06)" +msgstr "" + +#: src/changelog/v2.3.md:2 +msgid "Bug fixes: Sync, TTS, Remote images, Advanced editor, Export" +msgstr "" + +#: src/changelog/v2.3.md:3 +msgid "Note: This is the last version of AnkiDroid supported by AnkiWeb. Previous versions will not sync." +msgstr "" + +#: src/changelog/v2.3.md:5 +msgid "Version 2.3 (2014-10-27)" +msgstr "" + +#: src/changelog/v2.3.md:6 +msgid "Add new user manual" +msgstr "" + +#: src/changelog/v2.3.md:7 +msgid "Make statistics identical to Anki Desktop" +msgstr "" + +#: src/changelog/v2.3.md:8 +msgid "Fixes to media sync" +msgstr "" + +#: src/changelog/v2.3.md:9 +msgid "Fix bug where images were not showing" +msgstr "" + +#: src/changelog/v2.3.md:10 +msgid "Change layout of note editor" +msgstr "" + +#: src/changelog/v2.3.md:11 +msgid "Add new disable whiteboard option to reviewer and update icons" +msgstr "" + +#: src/changelog/v2.3.md:12 +msgid "Add full support for APKG export and import" +msgstr "" + +#: src/changelog/v2.3.md:13 +msgid "Add feature to email exported APKG" +msgstr "" + +#: src/changelog/v2.3.md:14 +msgid "Increase default number of backups and use APKG" +msgstr "" + +#: src/changelog/v2.3.md:15 +msgid "Make preview card accessible from card browser" +msgstr "" + +#: src/changelog/v2.3.md:16 +msgid "Make shared decks download with Android browser" +msgstr "" + +#: src/changelog/v2.3.md:17 +msgid "Add reset and reschedule feature in note editor" +msgstr "" + +#: src/changelog/v2.3.md:18 +msgid "Add a new notification system and icon" +msgstr "" + +#: src/changelog/v2.3.md:19 +msgid "Replace tutorial deck with new welcome screen" +msgstr "" + +#: src/changelog/v2.3.md:20 +msgid "Disable opening navigation drawer from reviewer when swipe is used" +msgstr "" + +#: src/changelog/v2.3.md:21 +msgid "Improve audio recording quality" +msgstr "" + +#: src/changelog/v2.3.md:22 +msgid "Support sticky fields when enabled in Anki Desktop" +msgstr "" + +#: src/changelog/v2.3.md:23 +msgid "Many other bug fixes" +msgstr "" + +#: src/changelog/v2.2.md:1 +msgid "Version 2.2.3 (2014-08-04)" +msgstr "" + +#: src/changelog/v2.2.md:2 +msgid "New media sync protocol" +msgstr "" + +#: src/changelog/v2.2.md:3 +msgid "Fix 2 bugs for opening links and resuming the app" +msgstr "" + +#: src/changelog/v2.2.md:5 +msgid "Version 2.2 (2014-07-21)" +msgstr "" + +#: src/changelog/v2.2.md:6 +msgid "Redesign layout" +msgstr "" + +#: src/changelog/v2.2.md:7 +msgid "Add pictures and sounds to flashcards (experimental)" +msgstr "" + +#: src/changelog/v2.2.md:8 +msgid "Make second column in card browser configurable" +msgstr "" + +#: src/changelog/v2.2.md:9 +msgid "Make images on flashcards zoomable" +msgstr "" + +#: src/changelog/v2.2.md:10 +msgid "Improve preview feature and access via action bar" +msgstr "" + +#: src/changelog/v2.2.md:11 +msgid "Simplify menus and settings" +msgstr "" + +#: src/changelog/v2.2.md:12 +msgid "Make slow searches in card browser cancellable" +msgstr "" + +#: src/changelog/v2.2.md:13 +msgid "Improve adding/removing tags" +msgstr "" + +#: src/changelog/v2.2.md:14 +msgid "Fix \"type in the answer\" and cloze deletion features" +msgstr "" + +#: src/changelog/v2.2.md:15 +msgid "Fix whiteboard feature" +msgstr "" + +#: src/changelog/v2.2.md:16 +msgid "Restore backups from within the app" +msgstr "" + +#: src/changelog/v2.2.md:17 +msgid "Make volume duck on any background music when sounds played" +msgstr "" + +#: src/changelog/v2.2.md:18 +msgid "Make playing of sounds consistent with Desktop version" +msgstr "" + +#: src/changelog/v2.2.md:19 +msgid "Remove animations feature due to being buggy" +msgstr "" + +#: src/changelog/v2.2.md:20 +msgid "Improve speed of showing cards" +msgstr "" + +#: src/changelog/v2.2.md:21 +msgid "Remove duplicate check dialog when adding new flashcards" +msgstr "" + +#: src/changelog/v2.2.md:22 +msgid "Remove swap button when adding or editing flashcards" +msgstr "" + +#: src/changelog/v2.2.md:23 +msgid "Remove kanji info feature (will become optional plugin in the future)" +msgstr "" + +#: src/changelog/v2.2.md:24 +msgid "Make minimum Android version 2.1" +msgstr "" + +#: src/changelog/v2.2.md:25 +msgid "Fix lots of bugs" +msgstr "" + +#: src/changelog/v2.1.md:1 +msgid "Version 2.1.3 (2014-04-05)" +msgstr "" + +#: src/changelog/v2.1.md:2 +msgid "Create new notes in correct deck" +msgstr "" + +#: src/changelog/v2.1.md:3 +msgid "TTS fixes" +msgstr "" + +#: src/changelog/v2.1.md:5 +msgid "Version 2.1 (2014-03-27)" +msgstr "" + +#: src/changelog/v2.1.md:6 +msgid "Lots of Bug Fixes" +msgstr "" + +#: src/changelog/v2.1.md:7 +msgid "New custom study option with improved tag selection" +msgstr "" + +#: src/changelog/v2.1.md:8 +msgid "New preview card feature in note editor (experimental)" +msgstr "" + +#: src/changelog/v2.1.md:9 +msgid "New override font preference in addition to default font" +msgstr "" + +#: src/changelog/v2.1.md:10 +msgid "New \"Kanji Info\" feature (enabled in preferences->reviewing->Kanji Info)" +msgstr "" + +#: src/changelog/v2.1.md:11 +msgid "Improve Aedict integration" +msgstr "" + +#: src/changelog/v2.1.md:12 +msgid "Support for Samsung Multi-Window" +msgstr "" + +#: src/changelog/v2.1.md:13 +msgid "Fix Some TTS Issues" +msgstr "" + +#: src/changelog/v2.1.md:14 +msgid "Updated Translations" +msgstr "" + +#: src/changelog/v2.1.md:15 +msgid "Remove unused media check when deleting decks" +msgstr "" + +#: src/changelog/v2.1.md:16 +msgid "Significantly increase speed for reducing filtered decks" +msgstr "" + +#: src/changelog/v2.1.md:17 +msgid "Remove upgrade wizard" +msgstr "" + +#: src/changelog/v2.0.md:1 +msgid "Version 2.0.4 (2014-02-03)" +msgstr "" + +#: src/changelog/v2.0.md:2 +msgid "Fix issue with typing answers" +msgstr "" + +#: src/changelog/v2.0.md:3 +msgid "Default font now overrides card font" +msgstr "" + +#: src/changelog/v2.0.md:4 +msgid "Fixed audio playback image being covered by text on Android 2.3" +msgstr "" + +#: src/changelog/v2.0.md:5 +msgid "Fixed reviewer crash when language set to Romanian" +msgstr "" + +#: src/changelog/v2.0.md:6 +msgid "Translation fixes" +msgstr "" + +#: src/changelog/v2.0.md:8 +msgid "Version 2.0.2 (2013-12-15)" +msgstr "" + +#: src/changelog/v2.0.md:9 +msgid "Fixed lots of crashes" +msgstr "" + +#: src/changelog/v2.0.md:10 +msgid "Tablet UI fixes" +msgstr "" + +#: src/changelog/v2.0.md:11 +msgid "Fixed new card ordering issues" +msgstr "" + +#: src/changelog/v2.0.md:12 +msgid "Card appearance now matches desktop Anki. (Centering cards is off by default but can be re-enabled)" +msgstr "" + +#: src/changelog/v2.0.md:13 +msgid "Option groups can now be changed in AnkiDroid" +msgstr "" + +#: src/changelog/v2.0.md:14 +msgid "Clear error message when using a bad template" +msgstr "" + +#: src/changelog/v2.0.md:15 +msgid "Fixed timeboxing notifications" +msgstr "" + +#: src/changelog/v2.0.md:16 +msgid "Properly scale images" +msgstr "" + +#: src/changelog/v2.0.md:17 +msgid "Better custom font handling" +msgstr "" + +#: src/changelog/v2.0.md:18 +msgid "More settings (next day starts at, timeboxing value, etc.)" +msgstr "" + +#: src/changelog/v2.0.md:19 +msgid "Changing AnkiDroid interface language now works." +msgstr "" + +#: src/changelog/v2.0.md:20 +msgid "Fixed import/shared deck download issues (\"not a valid apkg file\")" +msgstr "" + +#: src/changelog/v2.0.md:21 +msgid "Fixed invisible text on Motorola devices" +msgstr "" + +#: src/changelog/v2.0.md:22 +msgid "Focus on answer when revealed" +msgstr "" + +#: src/changelog/v2.0.md:23 +msgid "Filtered decks are now blue in deck list" +msgstr "" + +#: src/changelog/v2.0.md:24 +msgid "Removed unused circle button in note editor" +msgstr "" + +#: src/changelog/v2.0.md:26 +msgid "Version 2.0.1 (2013-02-06)" +msgstr "" + +#: src/changelog/v2.0.md:27 +msgid "Upgrade wizard" +msgstr "" + +#: src/changelog/v2.0.md:28 +msgid "Fix importing apkgs" +msgstr "" + +#: src/changelog/v2.0.md:29 +msgid "Fix media syncing" +msgstr "" + +#: src/changelog/v2.0.md:31 +msgid "Version 2.0 (2013-01-03)" +msgstr "" + +#: src/changelog/v2.0.md:32 +msgid "complete revision" +msgstr "" + +#: src/changelog/v2.0.md:33 +msgid "libanki2.0 scheduling" +msgstr "" + +#: src/changelog/v2.0.md:34 +msgid "new learning mode" +msgstr "" + +#: src/changelog/v2.0.md:35 +msgid "new layout" +msgstr "" + +#: src/changelog/v2.0.md:36 +msgid "merge syncing possible now" +msgstr "" + +#: src/changelog/v2.0.md:37 +msgid "better statistics" +msgstr "" + +#: src/changelog/v2.0.md:38 +msgid "decks are now saved in a single collection" +msgstr "" + +#: src/changelog/v2.0.md:39 +msgid "options are shareable now" +msgstr "" + +#: src/changelog/v2.0.md:40 +msgid "tablet layout" +msgstr "" + +#: src/changelog/v2.0.md:41 +msgid "tons of performance improvements" +msgstr "" + +#: src/changelog/v2.0.md:42 +msgid "card import function" +msgstr "" + +#: src/changelog/v2.0.md:43 +msgid "collection can be saved on internal memory" +msgstr "" + +#: src/changelog/v0.1-to-1.1.3.md:2 +msgid "AnkiDroid has continuously evolved collectively as an open source project, with the first version released to the Google Market on [June 28 2009](http://nicolas-raoul.blogspot.jp/2009/06/just-published-ankidroid-on-market.html). " +msgstr "" + +#: src/changelog/v0.1-to-1.1.3.md:4 +msgid "Version 1.1.3 was the last 1.x version (released on 26th June 2012), before the incompatible AnkiDroid v2.0 was released, essentially rewritten from scratch to be compatible with the new Anki Desktop v2.0." +msgstr "" + diff --git a/theme/head.hbs b/theme/head.hbs new file mode 100644 index 0000000..2f9001b --- /dev/null +++ b/theme/head.hbs @@ -0,0 +1,8 @@ + diff --git a/theme/index.hbs b/theme/index.hbs index 2195f7f..6cdaf4d 100644 --- a/theme/index.hbs +++ b/theme/index.hbs @@ -179,19 +179,8 @@
    + + + + + + + + + + + + + + + + + + + +
    + +
    + {{> header}} + + + + {{#if search_enabled}} + + {{/if}} + + + + +
    +
    + {{{ content }}} +
    + + +
    +
    + + + +
    + + {{#if live_reload_endpoint}} + + + {{/if}} + + {{#if google_analytics}} + + + {{/if}} + + {{#if playground_line_numbers}} + + {{/if}} + + {{#if playground_copyable}} + + {{/if}} + + {{#if playground_js}} + + + + + + {{/if}} + + {{#if search_js}} + + + + {{/if}} + + + + + + + {{#each additional_js}} + + {{/each}} + + {{#if is_print}} + {{#if mathjax_support}} + + {{else}} + + {{/if}} + {{/if}} + +
  • -
  • - + {{#if print_enable}} diff --git a/tools/localization/src/constants.ts b/tools/localization/src/constants.ts index 2f0c708..7784ae3 100644 --- a/tools/localization/src/constants.ts +++ b/tools/localization/src/constants.ts @@ -28,9 +28,3 @@ export const messagesPotFile = path.join(poDirectory, "messages.pot"); export const TEMP_DIR = path.join(__dirname, "../temp_dir"); createDirIfNotExisting(TEMP_DIR); - -export const LANGUAGES = [ - "ar", - "ja", - "zh-CN", -]; diff --git a/tools/localization/src/update.ts b/tools/localization/src/update.ts index b1e676d..336fbfa 100644 --- a/tools/localization/src/update.ts +++ b/tools/localization/src/update.ts @@ -14,7 +14,6 @@ import fs from "fs"; import { - LANGUAGES, TEMP_DIR, poDirectory, } from "./constants"; @@ -58,8 +57,9 @@ async function update( * Update translated I18n files in po/ dir */ export async function updateI18nFiles() { + const tempDir = fs.readdirSync(TEMP_DIR); - for (const language of LANGUAGES) { + for (const language of tempDir) { console.log(`\nCopying language files from temp_dir/${language}/messages-${language}.po to po/${language}.po`); From 9504a2a044916ca4d2ae7d9ae5dbe03bfd68a52c Mon Sep 17 00:00:00 2001 From: krmanik <12841290+krmanik@users.noreply.github.com> Date: Fri, 2 Feb 2024 17:29:32 +0800 Subject: [PATCH 09/11] format md files using `dprint fmt`, update docs --- .github/typos.toml | 2 +- Readme.md | 21 +- dprint.json | 2 +- src/SUMMARY.md | 55 ++--- src/adding-notes.md | 30 ++- src/advanced-features/advanced-statistics.md | 10 +- src/advanced-features/custom-fonts.md | 6 +- .../customizing-card-layout.md | 3 +- src/advanced-features/intro.md | 2 +- src/advanced-features/mathjax.md | 3 +- src/advanced-features/reminders.md | 1 + src/advanced-features/reverse-cards.md | 4 +- src/advanced-features/set-language-hint.md | 2 +- src/advanced-features/type-in-answer.md | 3 +- src/anki-desktop.md | 5 +- src/ankiweb-conflicts.md | 44 ++-- src/backups.md | 4 +- src/beta-testing.md | 7 +- src/browser.md | 23 +- src/changelog.md | 3 +- src/changelog/v0.1-to-1.1.3.md | 7 +- src/changelog/v2.0.md | 82 ++++--- src/changelog/v2.1.md | 33 +-- src/changelog/v2.10.md | 123 +++++----- src/changelog/v2.11.md | 100 ++++---- src/changelog/v2.12.md | 34 +-- src/changelog/v2.13.md | 152 ++++++------ src/changelog/v2.14.md | 163 +++++++------ src/changelog/v2.15.md | 139 +++++------ src/changelog/v2.16.md | 224 ++++++++--------- src/changelog/v2.2.md | 48 ++-- src/changelog/v2.3.md | 44 ++-- src/changelog/v2.4.md | 71 +++--- src/changelog/v2.5.md | 85 +++---- src/changelog/v2.6.md | 50 ++-- src/changelog/v2.7.md | 19 +- src/changelog/v2.8.md | 52 ++-- src/changelog/v2.9.md | 226 +++++++++--------- src/contributing.md | 7 +- src/deck-overview.md | 6 + src/deck-picker.md | 72 ++++-- src/drawer.md | 9 +- src/editing-notes.md | 24 +- src/exporting.md | 35 +-- src/filtered-deck.md | 2 +- src/gestures.md | 128 ++++++---- src/getting-started.md | 1 + src/help.md | 13 +- src/importing/importing-anki-databases.md | 16 +- src/importing/importing-anki-files.md | 19 +- src/intro.md | 2 +- src/keyboard-shortcuts.md | 99 ++++---- src/removed-features.md | 81 +++++++ src/reviewer.md | 18 +- src/rtl.md | 4 +- src/settings.md | 64 +++-- src/storage-migration-error.md | 54 +++++ 57 files changed, 1460 insertions(+), 1076 deletions(-) diff --git a/.github/typos.toml b/.github/typos.toml index 8e9b7e3..598f960 100644 --- a/.github/typos.toml +++ b/.github/typos.toml @@ -13,4 +13,4 @@ check-file = false [files] # Typos in third party packages should be fixed upstream. -extend-exclude = ["theme/*", "tools/*"] \ No newline at end of file +extend-exclude = ["theme/*", "tools/*"] diff --git a/Readme.md b/Readme.md index 18ae16b..db50d67 100644 --- a/Readme.md +++ b/Readme.md @@ -31,10 +31,12 @@ Run mdbook serve ``` -to start a web server with the course. You'll find the content on `http://localhost:3000`. You can use mdbook build to create a static version of the course in the book/ directory. To build any of the translated versions of the course, run +to start a web server with the course. You'll find the content on `http://localhost:3000`. You can use mdbook build to create a static version of the course in the book/ directory. To build any of the translated versions of the course, run + ``` MDBOOK_BOOK__LANGUAGE=xx mdbook build -d book/xx ``` + where xx is the ISO 639 language code (e.g. ja for the Japanese translation). # Translations of AnkiDroid Docs @@ -45,14 +47,14 @@ We use `crowdin.com` for AnkiDroid docs. Translating is easy and fun: -* Go to http://crowdin.net/project/ankidroiddocs -* Register, if you don't have an account yet -* Click on the flag of your language -* Click on a file (they are sorted by descending priority) -* Click on "Sort" -* Click on "Missing translation" -* Grey bullet=missing, Green bullet=done -* For each grey bullet, translate the English text to your language. +- Go to http://crowdin.net/project/ankidroiddocs +- Register, if you don't have an account yet +- Click on the flag of your language +- Click on a file (they are sorted by descending priority) +- Click on "Sort" +- Click on "Missing translation" +- Grey bullet=missing, Green bullet=done +- For each grey bullet, translate the English text to your language. ## Add new language entry if not exists @@ -72,6 +74,7 @@ Translating is easy and fun: }; ``` + 5. Commit changes and create pull request to ankidroiddocs 6. Update translations on Crowdin diff --git a/dprint.json b/dprint.json index a4369ac..22c3a0d 100644 --- a/dprint.json +++ b/dprint.json @@ -7,7 +7,7 @@ }, "includes": ["**/*.{json,md,toml}"], "excludes": [ - "**/*-lock.json" + "**/*.json" ], "plugins": [ "https://plugins.dprint.dev/json-0.17.1.wasm", diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 814430e..bca010c 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -1,6 +1,7 @@ # Summary [Introduction](intro.md) + - [Getting started](getting-started.md) - [The Deck List](deck-picker.md) - [Navigation Drawer](drawer.md) @@ -11,7 +12,7 @@ - [Finding/Searching/Browsing](browser.md) - [Filtered Decks](filtered-deck.md) - [Importing Anki Files](importing/importing-anki-files.md) - - [Importing Anki Databases (.anki2)](importing/importing-anki-databases.md) + - [Importing Anki Databases (.anki2)](importing/importing-anki-databases.md) - [Exporting Anki Files](exporting.md) - [Automatic Backups](backups.md) - [Preferences](settings.md) @@ -22,14 +23,14 @@ - [Using Anki Desktop with AnkiDroid](anki-desktop.md) - [Dealing with merge conflicts on AnkiWeb](ankiweb-conflicts.md) - [Advanced Features](advanced-features/intro.md) - - [MathJax Support](advanced-features/mathjax.md) - - [Reverse Cards](advanced-features/reverse-cards.md) - - [Custom Fonts](advanced-features/custom-fonts.md) - - [Custom Card Layout](advanced-features/customizing-card-layout.md) - - [Type in the answer feature](advanced-features/type-in-answer.md) - - [Advanced Statistics](advanced-features/advanced-statistics.md) - - [Reminders](advanced-features/reminders.md) - - [Automatic Language Selection](advanced-features/set-language-hint.md) + - [MathJax Support](advanced-features/mathjax.md) + - [Reverse Cards](advanced-features/reverse-cards.md) + - [Custom Fonts](advanced-features/custom-fonts.md) + - [Custom Card Layout](advanced-features/customizing-card-layout.md) + - [Type in the answer feature](advanced-features/type-in-answer.md) + - [Advanced Statistics](advanced-features/advanced-statistics.md) + - [Reminders](advanced-features/reminders.md) + - [Automatic Language Selection](advanced-features/set-language-hint.md) - [Removed Features](removed-features.md) - [Storage Migration Error](storage-migration-error.md) - [Help & Supports](help.md) @@ -37,21 +38,21 @@ - [Beta testing](beta-testing.md) - [Contributing to AnkiDroid](contributing.md) - [Changelog](intro.md) - - [Version 2.16](changelog/v2.16.md) - - [Version 2.15](changelog/v2.15.md) - - [Version 2.14](changelog/v2.14.md) - - [Version 2.13](changelog/v2.13.md) - - [Version 2.12](changelog/v2.12.md) - - [Version 2.11](changelog/v2.11.md) - - [Version 2.10](changelog/v2.10.md) - - [Version 2.9](changelog/v2.9.md) - - [Version 2.8](changelog/v2.8.md) - - [Version 2.7](changelog/v2.7.md) - - [Version 2.6](changelog/v2.6.md) - - [Version 2.5](changelog/v2.5.md) - - [Version 2.4](changelog/v2.4.md) - - [Version 2.3](changelog/v2.3.md) - - [Version 2.2](changelog/v2.2.md) - - [Version 2.1](changelog/v2.1.md) - - [Version 2.0](changelog/v2.0.md) - - [Version 0.1 to 1.1.3](changelog/v0.1-to-1.1.3.md) + - [Version 2.16](changelog/v2.16.md) + - [Version 2.15](changelog/v2.15.md) + - [Version 2.14](changelog/v2.14.md) + - [Version 2.13](changelog/v2.13.md) + - [Version 2.12](changelog/v2.12.md) + - [Version 2.11](changelog/v2.11.md) + - [Version 2.10](changelog/v2.10.md) + - [Version 2.9](changelog/v2.9.md) + - [Version 2.8](changelog/v2.8.md) + - [Version 2.7](changelog/v2.7.md) + - [Version 2.6](changelog/v2.6.md) + - [Version 2.5](changelog/v2.5.md) + - [Version 2.4](changelog/v2.4.md) + - [Version 2.3](changelog/v2.3.md) + - [Version 2.2](changelog/v2.2.md) + - [Version 2.1](changelog/v2.1.md) + - [Version 2.0](changelog/v2.0.md) + - [Version 0.1 to 1.1.3](changelog/v0.1-to-1.1.3.md) diff --git a/src/adding-notes.md b/src/adding-notes.md index 462684a..bef34e4 100644 --- a/src/adding-notes.md +++ b/src/adding-notes.md @@ -2,7 +2,7 @@ -*_Note:_* _This section onwards assumes you understand what [notes, fields, card templates, and note types](https://docs.ankiweb.net/getting-started.html#notes--fields) are_ +**Note:** _This section onwards assumes you understand what [notes, fields, card templates, and note types](https://docs.ankiweb.net/getting-started.html#notes--fields) are_ To add a new note, tap the **+** button at the bottom of the deck list and choose **Add**. @@ -10,26 +10,32 @@ To add a new note, tap the **+** button at the bottom of the deck list and choos The following controls are available in the add note screen: -### Type -Allows you to select the type of note you'd like to add. -For most purposes the **Basic** note type is sufficient, but for example if you would like an extra card generated which is the reverse of the main card (i.e. shows the **Back** field on the front of the card), you could chose the **Basic (and reversed card)** note type. +### Type + +Allows you to select the type of note you'd like to add. +For most purposes the **Basic** note type is sufficient, but for example if you would like an extra card generated which is the reverse of the main card (i.e. shows the **Back** field on the front of the card), you could chose the **Basic (and reversed card)** note type. + +### Deck -### Deck Allows you to change the deck the generated card/cards will be added to. -### Fields +### Fields + Below the deck selector are the fields for the note (for example the **Basic** note type has two fields **Front** and **Back**). When you tap on a field, a keyboard will come up, allowing you to type in information. -### Media Buttons -Next to each field is an attach icon, which allows you to add media to your note (this feature is currently in the experimental phase). -Add image lets you add images either via your device's camera (if it has one), or from your photo library. +### Media Buttons + +Next to each field is an attach icon, which allows you to add media to your note (this feature is currently in the experimental phase).\ +Add image lets you add images either via your device's camera (if it has one), or from your photo library. Record audio allows you to record your voice and place it into a field. The advanced editor lets you automatically search for translations or pronunciation audio files online. -### Tags +### Tags + Brings up a dialog which lets you add / remove tags from the note. -### Cards -Shows the names of the cards which will be generated for the selected note type. Tapping on this button will bring up a dialog which lets you preview the source code for the card template of the selected note type. From here you can edit, preview, add, and delete card templates. See the [cards and templates section](https://docs.ankiweb.net/templates/intro.html) of the Anki Desktop manual for more information about card templates. +### Cards + +Shows the names of the cards which will be generated for the selected note type. Tapping on this button will bring up a dialog which lets you preview the source code for the card template of the selected note type. From here you can edit, preview, add, and delete card templates. See the [cards and templates section](https://docs.ankiweb.net/templates/intro.html) of the Anki Desktop manual for more information about card templates. Long press in a text entry field to add a cloze deletion around the selected text, or an empty cloze deletion if there is no selected text. diff --git a/src/advanced-features/advanced-statistics.md b/src/advanced-features/advanced-statistics.md index 6ca1e8c..cab0be6 100644 --- a/src/advanced-features/advanced-statistics.md +++ b/src/advanced-features/advanced-statistics.md @@ -7,7 +7,8 @@ Advanced Statistics can be enabled in `Settings -> Advanced -> Advanced Statisti The outcome of future reviewing, learning or failing cards affects reviews after that future review. To take this into account, the probability of each outcome is computed from the review log. Then the outcome is randomly chosen, such that an outcome which is more likely according to the review log is more likely to be chosen than an outcome which is less likely according to the review log. The settings all affect how the effect of the outcome of future reviews on subsequent reviews is taken into account. ### Compute first n days, simulate remainder -If this setting is set to a number greater than 0, instead of randomly choosing an outcome, each possible outcome is taken into account in the simulation, together with its probability. The probability is taken into account for the graph and for future reviews in which it results, which also affect the graph. + +If this setting is set to a number greater than 0, instead of randomly choosing an outcome, each possible outcome is taken into account in the simulation, together with its probability. The probability is taken into account for the graph and for future reviews in which it results, which also affect the graph. One review has a couple of possible outcomes (say 4), which all result in a review. That review also has a couple of possible outcomes and so on. If many reviews are simulated this way, many reviews (4 x 4 x 4 x ... ) have to be taken into account which increases the time it takes to compose the graph. Therefore, for reviews later than n days from now are simulated by randomly choosing an outcome. @@ -15,14 +16,15 @@ In summary, higher n gives a more accurate graph, but it takes more time to comp ### Precision of computation -Reviews which occur with a probability smaller than 100% minus the configured precision of the computation are simulated by randomly choosing an outcome rather than taking into account each possible outcome. This setting is only applicable if the first n days are computed. +Reviews which occur with a probability smaller than 100% minus the configured precision of the computation are simulated by randomly choosing an outcome rather than taking into account each possible outcome. This setting is only applicable if the first n days are computed. If Advanced Statistics are disabled, the **Forecast** graph shows the estimated number of reviews that will be due on a given day in the future if you do not review cards, learn no new cards and fail no cards. In summary, higher precision gives a more accurate graph, but it takes more time to compose the graph. -### Number of iterations of the simulation +### Number of iterations of the simulation + Composes the graph several times and then displays the average of these graphs. -Each time the graph is composed, another outcome might be randomly chosen. If we average many outcomes which are randomly chosen taking into account the probabilities from the review log, the average outcome will likely be close to the average of the probabilities from the review log. +Each time the graph is composed, another outcome might be randomly chosen. If we average many outcomes which are randomly chosen taking into account the probabilities from the review log, the average outcome will likely be close to the average of the probabilities from the review log. If we average many graphs, the average graph will likely be close to the graph which is generated by taking into account all possible outcomes. If the number of graphs which are averaged is not too high, it will be faster than taking into account all possible outcomes. diff --git a/src/advanced-features/custom-fonts.md b/src/advanced-features/custom-fonts.md index 3b41b43..e47dfa0 100644 --- a/src/advanced-features/custom-fonts.md +++ b/src/advanced-features/custom-fonts.md @@ -2,7 +2,7 @@ AnkiDroid allows you to use non-system fonts on your cards. To set them up properly, it is strongly recommended to use the official method that is used by Anki Desktop. Please see [the corresponding section in the desktop manual](https://docs.ankiweb.net/templates/styling.html#installing-fonts) for more information. -Alternatively, you can create a new subfolder **fonts** in the main AnkiDroid directory (i.e. the folder which contains the **backups** subfolder, specified under `Settings > Advanced > AnkiDroid directory)`, copy a compatible font file (i.e. .ttf) there, and then set this as the default font under `Settings > Fonts > Default font`. +Alternatively, you can create a new subfolder **fonts** in the main AnkiDroid directory (i.e. the folder which contains the **backups** subfolder, specified under `Settings > Advanced > AnkiDroid directory)`, copy a compatible font file (i.e. .ttf) there, and then set this as the default font under `Settings > Fonts > Default font`. **Note:** this method will change the default font for **all** of your cards, whereas the official method can be more specific. Also, if you sync with AnkiWeb, using this method will lead to cards being displayed differently on different devices. @@ -10,6 +10,6 @@ Only fonts in the ttf format are officially supported in Anki/AnkiDroid; the [Go Please note that AnkiDroid has to load the entire font into memory in order to use it, and fonts for Asian languages can be quite large. If you have an older device and notice AnkiDroid crashing frequently after installing a font, you may have exceeded your device's memory limits. For Google Noto, it's not recommended to use the combined CJK font, rather get the individual languages [separately from here](https://github.com/googlei18n/noto-cjk). ->**Note 1**: If you have **Fetch media on sync** disabled, you may need to manually copy the font file from Anki Desktop to your AnkiDroid/collection.media folder. +> **Note 1**: If you have **Fetch media on sync** disabled, you may need to manually copy the font file from Anki Desktop to your AnkiDroid/collection.media folder. ->**Note 2**: If you can't get your font to work after following the steps in here and the Anki Desktop manual, please refer to the FAQ for detailed steps on how to debug font issues. +> **Note 2**: If you can't get your font to work after following the steps in here and the Anki Desktop manual, please refer to the FAQ for detailed steps on how to debug font issues. diff --git a/src/advanced-features/customizing-card-layout.md b/src/advanced-features/customizing-card-layout.md index 990365d..4775529 100644 --- a/src/advanced-features/customizing-card-layout.md +++ b/src/advanced-features/customizing-card-layout.md @@ -1,5 +1,6 @@ # Custom Card Layout -The layout of flashcards is completely customizable, although this is an advanced topic with a fairly steep learning curve, and you will probably find it a lot more convenient to do the customization with [Anki Desktop](../anki-desktop.md). + +The layout of flashcards is completely customizable, although this is an advanced topic with a fairly steep learning curve, and you will probably find it a lot more convenient to do the customization with [Anki Desktop](../anki-desktop.md). The [card templates section](https://docs.ankiweb.net/templates/intro.html) of the Anki Desktop manual has detailed instructions on how to edit note types, and most of the actions discussed there are also available from AnkiDroid by tapping **cards** at the bottom of the note editor, or choosing the **manage note types** option in the deck picker. Since detailed information on customizing card layouts is available in the Anki desktop manual, it will not be repeated here. diff --git a/src/advanced-features/intro.md b/src/advanced-features/intro.md index ccc31f6..7928d5c 100644 --- a/src/advanced-features/intro.md +++ b/src/advanced-features/intro.md @@ -7,4 +7,4 @@ - [Type in the answer feature](type-in-answer.md) - [Advanced Statistics](advanced-statistics.md) - [Reminders](reminders.md) -- [Automatic Language Selection](set-language-hint.md) \ No newline at end of file +- [Automatic Language Selection](set-language-hint.md) diff --git a/src/advanced-features/mathjax.md b/src/advanced-features/mathjax.md index d57f2a0..d43c432 100644 --- a/src/advanced-features/mathjax.md +++ b/src/advanced-features/mathjax.md @@ -1,5 +1,6 @@ # MathJax Support -Mathjax is a modern typesetting library for math and chemistry. AnkiDroid supports Mathjax cards out of the box. Mathjax is configured to expect TeX formatting, with `\(` and `\)` delimiting inline equations and `\[` and `\]` for display equations. + +Mathjax is a modern typesetting library for math and chemistry. AnkiDroid supports Mathjax cards out of the box. Mathjax is configured to expect TeX formatting, with `\(` and `\)` delimiting inline equations and `\[` and `\]` for display equations. To try it out, enter the following into a field: diff --git a/src/advanced-features/reminders.md b/src/advanced-features/reminders.md index cbf3f68..f2d6914 100644 --- a/src/advanced-features/reminders.md +++ b/src/advanced-features/reminders.md @@ -1,4 +1,5 @@ # Reminders + AnkiDroid can remind you to devote some time to reviewing cards every day at a specific time via Android's notification framework. You can configure reminders for each options group independently. To configure a notification go to Deck options > Reminders, then tick the checkbox and select the time you want to be notified at. diff --git a/src/advanced-features/reverse-cards.md b/src/advanced-features/reverse-cards.md index 8172c4d..f9d4d32 100644 --- a/src/advanced-features/reverse-cards.md +++ b/src/advanced-features/reverse-cards.md @@ -1,11 +1,11 @@ # Reverse Cards -The Anki system has [built-in note types which allow you to review cards in both directions](https://docs.ankiweb.net/getting-started.html#note-types). +The Anki system has [built-in note types which allow you to review cards in both directions](https://docs.ankiweb.net/getting-started.html#note-types). When [creating new material](../adding-notes.md) in AnkiDroid, you should choose one of these note types, such as **Basic (and reversed card)**, which will automatically generate a reverse card for you. ![ReverseNoteType](../img/ReverseNoteType.png) -If you used the wrong note type when adding your material, you can change the note type via the [edit note screen](../editing-notes.md), or you can change the note type for multiple cards at once using the browser in Anki Desktop. +If you used the wrong note type when adding your material, you can change the note type via the [edit note screen](../editing-notes.md), or you can change the note type for multiple cards at once using the browser in Anki Desktop. To do this, follow the instructions in the [syncing with Anki Desktop section](../anki-desktop.md), then in Anki Desktop open the browser, select the cards you want to change, then choose **Change note type** from the menu. Alternatively, if your cards are using a custom card layout which doesn't include a reverse card, you can edit the note type to include a reverse card by following the instructions in the [reverse cards section](https://docs.ankiweb.net/templates/generation.html#reverse-cards) of the Anki Desktop user manual. While less convenient than using Anki Desktop, it is possible to edit the note type from directly within AnkiDroid as well; see the [custom card layout section](../advanced-features/customizing-card-layout.md) for more on this. diff --git a/src/advanced-features/set-language-hint.md b/src/advanced-features/set-language-hint.md index 34b6b59..bbf7377 100644 --- a/src/advanced-features/set-language-hint.md +++ b/src/advanced-features/set-language-hint.md @@ -1,5 +1,5 @@ # Automatic Language Selection -AnkiDroid has an in Automatic Language Selection feature in the Note Editor starting with AnkiDroid 2.13. This feature allows you to define a default language to be used in your keyboard for a field in a note type. +AnkiDroid has an in Automatic Language Selection feature in the Note Editor starting with AnkiDroid 2.13. This feature allows you to define a default language to be used in your keyboard for a field in a note type. For example, if you have Russian and English note fields, and your keyboard supports the setImeHintLocales Android API, the keyboard layout will switch to Russian in the first field and back to English in the second automatically when the fields get focus. [Checkout video reference for demonstration](https://www.youtube.com/watch?v=JrxDjTrRhBE) diff --git a/src/advanced-features/type-in-answer.md b/src/advanced-features/type-in-answer.md index 62cd717..df9c316 100644 --- a/src/advanced-features/type-in-answer.md +++ b/src/advanced-features/type-in-answer.md @@ -8,8 +8,9 @@ The text input box and the soft keyboard can be hidden by ticking **Disable typi Even with typing disabled, the correct answer is shown on the answer side. This is done on purpose; otherwise the correct answer might not be shown at all. -To hide the comparison (e.g. because the correct answer is shown anyway), the HTML id **typeans** can be used. +To hide the comparison (e.g. because the correct answer is shown anyway), the HTML id **typeans** can be used. Add following to the [card styling](https://docs.ankiweb.net/templates/styling.html#card-styling) using Anki Desktop. + ```css .mobile #typeans { display: none; diff --git a/src/anki-desktop.md b/src/anki-desktop.md index 1d61aca..e6a034f 100644 --- a/src/anki-desktop.md +++ b/src/anki-desktop.md @@ -9,14 +9,16 @@ Note that AnkiDroid is not affiliated with Anki Desktop or AnkiWeb. AnkiDroid is ![AnkiDesktop.png](img/AnkiDesktop.png) ## Via Cloud Sync + Before you can use AnkiWeb, you'll first need to create an account by visiting [https://ankiweb.net](https://ankiweb.net) and clicking the **Sign Up** button. If you have used AnkiWeb in the past, you can skip this step. After signing up, see the corresponding instructions below, depending on whether you are trying to get your existing decks into AnkiDroid or out of AnkiDroid. ### Sync existing decks into a new AnkiDroid install + In this scenario you have some existing Anki decks that you want to copy into a new install of AnkiDroid by syncing with AnkiWeb. Open the Anki client with your existing decks (usually this would be Anki desktop, but it could also mean a version of AnkiDroid you have been using on another device), and click the synchronization button (which has two arrows in a circle) at the top right of the deck list. If you have never used AnkiWeb before you will need to enter your credentials if prompted, and then press the **Upload to AnkiWeb** button to confirm overwriting the empty collection on AnkiWeb with your existing decks in Anki. Anki will upload all your cards, images and audio to AnkiWeb. If you have a lot of media, this may take some time. -Once the synchronization has completed, open AnkiDroid in the device that you are trying to copy the existing decks into, and tap the **Sync** button in the app bar at the top of the main [deck list](deck-picker.md). +Once the synchronization has completed, open AnkiDroid in the device that you are trying to copy the existing decks into, and tap the **Sync** button in the app bar at the top of the main [deck list](deck-picker.md). After entering your AnkiWeb credentials, AnkiDroid will download all your cards and media, and remember your login information for next time. Note that if you have any existing material in AnkiDroid before attempting to sync, you may be shown a message asking you to choose to either download from AnkiWeb, or upload to AnkiWeb. If you are happy to lose the cards in AnkiDroid then simply choose **Download**. If you need to merge the existing cards with AnkiDroid then you should see the [resolving conflicts](ankiweb-conflicts.md#dealing-with-merge-conflicts-on-ankiweb) section before continuing. @@ -26,6 +28,7 @@ After the first synchronization has completed, you can click the sync button aga If you add some new cards on the desktop computer and want to sync them to AnkiDroid, you'd repeat the same basic process: sync on desktop (or close the program, as it syncs automatically on close by default), and then tap the sync button on AnkiDroid. ### Sync from AnkiDroid to Computer + The process of syncing from AnkiDroid to computer is essentially the same as syncing from computer to AnkiDroid, but in reverse. From the [deck list](deck-picker.md), tap the sync button in the top right (it has two arrows in a circle). If it's your first time using AnkiWeb, you may need to enter your login credentials, and then press the "upload" button to upload your AnkiDroid collection to AnkiWeb. diff --git a/src/ankiweb-conflicts.md b/src/ankiweb-conflicts.md index fecc1c8..f319be2 100644 --- a/src/ankiweb-conflicts.md +++ b/src/ankiweb-conflicts.md @@ -1,5 +1,6 @@ # Dealing with merge conflicts on AnkiWeb -Although it should not happen often, occasionally you may end up in the position where your cards on AnkiDroid can not be automatically merged with the cards on AnkiWeb. In this case it's necessary to choose to either upload to or download from AnkiWeb, which would overwrite any changes on the other side. + +Although it should not happen often, occasionally you may end up in the position where your cards on AnkiDroid can not be automatically merged with the cards on AnkiWeb. In this case it's necessary to choose to either upload to or download from AnkiWeb, which would overwrite any changes on the other side. If you have new cards on both sides which you want to keep, before syncing you can [export a deck package](exporting.md) for each deck containing new cards from AnkiDroid, then when you do the sync choose **download** to download from AnkiWeb. After the synchronization has completed, you can import the decks you previously exported from AnkiDroid, as per the [importing section](importing/importing-anki-files.md). @@ -16,30 +17,33 @@ AnkiDroid can't directly import text files. If you wish to do that, you'll need ### Copy all decks from Anki Desktop to AnkiDroid via USB On your computer: - 1. Open the desktop program. - 2. Choose File>Export from the menu. - 3. Click the **Export...** button. Make sure to leave **all decks** selected, as it's not possible to import individual decks into AnkiDroid. **Include scheduling information** must also remain checked. - 4. Anki will automatically create a collection.apkg on your desktop. If the file is named something else, please see the previous step again. - 5. Connect your Android device to your computer via the USB cable. - 6. Open the file explorer on your computer and view the contents of your Android device. - 7. Locate the AnkiDroid folder. - 8. Drag the collection.apkg file from your desktop into this AnkiDroid folder. - + +1. Open the desktop program. +2. Choose File>Export from the menu. +3. Click the **Export...** button. Make sure to leave **all decks** selected, as it's not possible to import individual decks into AnkiDroid. **Include scheduling information** must also remain checked. +4. Anki will automatically create a collection.apkg on your desktop. If the file is named something else, please see the previous step again. +5. Connect your Android device to your computer via the USB cable. +6. Open the file explorer on your computer and view the contents of your Android device. +7. Locate the AnkiDroid folder. +8. Drag the collection.apkg file from your desktop into this AnkiDroid folder. + Then in AnkiDroid: - 1. From the main decks screen, tap **Import file** from the menu - 2. Tap on **Collection** and then confirm -Once complete, the decks on your device will have been replaced with the decks from your desktop. See the section on +1. From the main decks screen, tap **Import file** from the menu +2. Tap on **Collection** and then confirm + +Once complete, the decks on your device will have been replaced with the decks from your desktop. See the section on [importing apkg files](importing/importing-anki-files.md) for more help with importing. ### Copy all decks from AnkiDroid to Anki Desktop via USB The process to copy your decks from AnkiDroid to Anki Desktop is essentially the same as above, but in reverse. - 1. Start with your device disconnected from USB - 2. Choose **Export collection** from the main menu in the Deck Screen - 3. Ensure **Include scheduling information** remains checked and press **OK** - 4. Connect device to computer using USB - 5. Copy the **collection.apkg** from the path specified in the message to the desktop on your computer - 6. Double click on the file to import into Anki Desktop - + +1. Start with your device disconnected from USB +2. Choose **Export collection** from the main menu in the Deck Screen +3. Ensure **Include scheduling information** remains checked and press **OK** +4. Connect device to computer using USB +5. Copy the **collection.apkg** from the path specified in the message to the desktop on your computer +6. Double click on the file to import into Anki Desktop + See the [exporting section](exporting.md) below for more detailed information on exporting from AnkiDroid. diff --git a/src/backups.md b/src/backups.md index 65880f0..f8d6777 100644 --- a/src/backups.md +++ b/src/backups.md @@ -2,7 +2,7 @@ AnkiDroid will automatically create backups of your collection for you. The backups include all your cards and statistics, but do not include sounds or images. -The backup is taken in the background when you first start the app. A backup will only happen if more than 5 hours has elapsed since the last time a backup was created. +The backup is taken in the background when you first start the app. A backup will only happen if more than 5 hours has elapsed since the last time a backup was created. By default, AnkiDroid will store the last 8 backups; this number can be changed in the main settings. -You can restore a backup by choosing the *restore from backup* option from the main menu of the [decks screen](deck-picker.md). +You can restore a backup by choosing the _restore from backup_ option from the main menu of the [decks screen](deck-picker.md). diff --git a/src/beta-testing.md b/src/beta-testing.md index 9788c03..a7f223a 100644 --- a/src/beta-testing.md +++ b/src/beta-testing.md @@ -1,9 +1,10 @@ # Beta testing + If you want to try out the latest features in AnkiDroid, you can sign up for the beta testing program as follows: - 1. Visit the [Google Play Beta page](https://play.google.com/apps/testing/com.ichi2.anki) - 2. Click **Become a beta tester** - +1. Visit the [Google Play Beta page](https://play.google.com/apps/testing/com.ichi2.anki) +2. Click **Become a beta tester** + After following these steps, the latest beta version will automatically be installed by Google Play in the same way as ordinary updates. If you are more adventurous, you can also become an alpha tester, by joining the [alpha testers group](https://groups.google.com/g/ankidroidalphatesters) in addition to performing the above steps for beta testing. diff --git a/src/browser.md b/src/browser.md index bf0db73..ce7e3fe 100644 --- a/src/browser.md +++ b/src/browser.md @@ -8,45 +8,56 @@ You can search for or browse cards by tapping the **Card browser** button from t The browser screen starts by displaying all the cards in the currently selected deck. You can search for cards in the selected deck by tapping the magnifying glass icon in the top. You can change the selected deck (or change to all decks) by choosing the deck from the dropdown list on the top left. -By default, the first column in the browser gives the text which will be shown on the question (i.e. front side) of the flashcard, and the second column shows the text from the answer (i.e. the back side) of the flashcard. +By default, the first column in the browser gives the text which will be shown on the question (i.e. front side) of the flashcard, and the second column shows the text from the answer (i.e. the back side) of the flashcard. -The first column can also be configured to show the [sort field](https://docs.ankiweb.net/editing.html#customizing-fields) for a more compact display. The second column can be configured to show many different parameters by tapping the drop down menu in the column heading. +The first column can also be configured to show the [sort field](https://docs.ankiweb.net/editing.html#customizing-fields) for a more compact display. The second column can be configured to show many different parameters by tapping the drop down menu in the column heading. Note that the content of the columns is dynamically calculated as your scroll through the list of the cards. From the search results, you can tap on a card to edit it (see the [edit note section](editing-notes.md) above), or long-tapping on it will show a menu allowing you to perform the following actions: #### Mark / unmark note + Add / remove the **marked** tag from the note. Cards with a marked note are highlighted in purple. #### Flag card + Change or remove the color coded **flag** on the card. Cards with a flag are highlighted in the flags color. #### Suspend / unsuspend card + Suspended cards are highlighted in yellow, and are not shown during review. #### Delete note + Delete the note of the currently selected card, and all cards belonging to that note. This action cannot be undone without [restoring from backup](backups.md). #### Preview + Render the currently selected card so that you can see what it looks like in the reviewer. #### Select multiple cards + Long-tapping on a single card will select the single card. While that card is selected, if you long-tap on another card on your screen, then all of the cards between the first selected card and the last card will be selected. This allows for actions to be performed on multiple cards at once. ## Searching + AnkiDroid supports all the search strings that the desktop version of Anki does, allowing you to perform quite complex searches. Some examples: #### tag:marked + show cards that with the tag **marked** - + #### is:due + show only cards that are waiting for review - + #### front:rabbit -show only cards where the front field is exactly **rabbit** - + +show only cards where the front field is exactly **rabbit** + #### flag:1 + show only cards marked with a red flag For a full list of the possibilities, please see the section in the [desktop manual](https://docs.ankiweb.net/searching.html). diff --git a/src/changelog.md b/src/changelog.md index 42db7af..b79234e 100644 --- a/src/changelog.md +++ b/src/changelog.md @@ -1,5 +1,6 @@ # AnkiDroid Changelog +- [Version 2.16](/changelog/v2.16.html) - [Version 2.15](/changelog/v2.15.html) - [Version 2.14](/changelog/v2.14.html) - [Version 2.13](/changelog/v2.13.html) @@ -16,4 +17,4 @@ - [Version 2.2](/changelog/v2.2.html) - [Version 2.1](/changelog/v2.1.html) - [Version 2.0](/changelog/v2.0.html) -- [Version 0.1-to-1.1.3](/changelog/v0.1-to-1.1.3.html) \ No newline at end of file +- [Version 0.1-to-1.1.3](/changelog/v0.1-to-1.1.3.html) diff --git a/src/changelog/v0.1-to-1.1.3.md b/src/changelog/v0.1-to-1.1.3.md index 653f93b..4328def 100644 --- a/src/changelog/v0.1-to-1.1.3.md +++ b/src/changelog/v0.1-to-1.1.3.md @@ -1,5 +1,6 @@ -## Version 0.1 to 1.1.3 -AnkiDroid has continuously evolved collectively as an open source project, with the first version released to the Google Market on [June 28 2009](http://nicolas-raoul.blogspot.jp/2009/06/just-published-ankidroid-on-market.html). +## Version 0.1 to 1.1.3 -Version 1.1.3 was the last 1.x version (released on 26th June 2012), before the incompatible AnkiDroid v2.0 was released, +AnkiDroid has continuously evolved collectively as an open source project, with the first version released to the Google Market on [June 28 2009](http://nicolas-raoul.blogspot.jp/2009/06/just-published-ankidroid-on-market.html). + +Version 1.1.3 was the last 1.x version (released on 26th June 2012), before the incompatible AnkiDroid v2.0 was released, essentially rewritten from scratch to be compatible with the new Anki Desktop v2.0. diff --git a/src/changelog/v2.0.md b/src/changelog/v2.0.md index 2be2e04..bde3541 100644 --- a/src/changelog/v2.0.md +++ b/src/changelog/v2.0.md @@ -1,43 +1,47 @@ ## Version 2.0.4 (2014-02-03) - * Fix issue with typing answers - * Default font now overrides card font - * Fixed audio playback image being covered by text on Android 2.3 - * Fixed reviewer crash when language set to Romanian - * Translation fixes - + +- Fix issue with typing answers +- Default font now overrides card font +- Fixed audio playback image being covered by text on Android 2.3 +- Fixed reviewer crash when language set to Romanian +- Translation fixes + ## Version 2.0.2 (2013-12-15) - * Fixed lots of crashes - * Tablet UI fixes - * Fixed new card ordering issues - * Card appearance now matches desktop Anki. (Centering cards is off by default but can be re-enabled) - * Option groups can now be changed in AnkiDroid - * Clear error message when using a bad template - * Fixed timeboxing notifications - * Properly scale images - * Better custom font handling - * More settings (next day starts at, timeboxing value, etc.) - * Changing AnkiDroid interface language now works. - * Fixed import/shared deck download issues ("not a valid apkg file") - * Fixed invisible text on Motorola devices - * Focus on answer when revealed - * Filtered decks are now blue in deck list - * Removed unused circle button in note editor - + +- Fixed lots of crashes +- Tablet UI fixes +- Fixed new card ordering issues +- Card appearance now matches desktop Anki. (Centering cards is off by default but can be re-enabled) +- Option groups can now be changed in AnkiDroid +- Clear error message when using a bad template +- Fixed timeboxing notifications +- Properly scale images +- Better custom font handling +- More settings (next day starts at, timeboxing value, etc.) +- Changing AnkiDroid interface language now works. +- Fixed import/shared deck download issues ("not a valid apkg file") +- Fixed invisible text on Motorola devices +- Focus on answer when revealed +- Filtered decks are now blue in deck list +- Removed unused circle button in note editor + ## Version 2.0.1 (2013-02-06) - * Upgrade wizard - * Fix importing apkgs - * Fix media syncing - + +- Upgrade wizard +- Fix importing apkgs +- Fix media syncing + ## Version 2.0 (2013-01-03) - * complete revision - * libanki2.0 scheduling - * new learning mode - * new layout - * merge syncing possible now - * better statistics - * decks are now saved in a single collection - * options are shareable now - * tablet layout - * tons of performance improvements - * card import function - * collection can be saved on internal memory + +- complete revision +- libanki2.0 scheduling +- new learning mode +- new layout +- merge syncing possible now +- better statistics +- decks are now saved in a single collection +- options are shareable now +- tablet layout +- tons of performance improvements +- card import function +- collection can be saved on internal memory diff --git a/src/changelog/v2.1.md b/src/changelog/v2.1.md index cb70cc7..e68fd24 100644 --- a/src/changelog/v2.1.md +++ b/src/changelog/v2.1.md @@ -1,18 +1,19 @@ ## Version 2.1.3 (2014-04-05) - * Create new notes in correct deck - * TTS fixes - + +- Create new notes in correct deck +- TTS fixes + ## Version 2.1 (2014-03-27) - * Lots of Bug Fixes - * New custom study option with improved tag selection - * New preview card feature in note editor (experimental) - * New override font preference in addition to default font - * New "Kanji Info" feature (enabled in preferences->reviewing->Kanji Info) - * Improve Aedict integration - * Support for Samsung Multi-Window - * Fix Some TTS Issues - * Updated Translations - * Remove unused media check when deleting decks - * Significantly increase speed for reducing filtered decks - * Remove upgrade wizard - \ No newline at end of file + +- Lots of Bug Fixes +- New custom study option with improved tag selection +- New preview card feature in note editor (experimental) +- New override font preference in addition to default font +- New "Kanji Info" feature (enabled in preferences->reviewing->Kanji Info) +- Improve Aedict integration +- Support for Samsung Multi-Window +- Fix Some TTS Issues +- Updated Translations +- Remove unused media check when deleting decks +- Significantly increase speed for reducing filtered decks +- Remove upgrade wizard diff --git a/src/changelog/v2.10.md b/src/changelog/v2.10.md index a4ac3ec..baf99ea 100644 --- a/src/changelog/v2.10.md +++ b/src/changelog/v2.10.md @@ -1,68 +1,73 @@ ## Version 2.10.4 (2020-05-31) -* Workaround expired AnkiWeb SSL Root certificate -* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/22?closed=1) + +- Workaround expired AnkiWeb SSL Root certificate +- [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/22?closed=1) ## Version 2.10.3 (2020-05-29) -* Fix crash on no permissions on Card Browser system text menu entry -* Fix crash in widget if external storage unmounts -* Fix crash on device reboot if no permissions -* Fix crash if deck picker background image too large -* Fix crash in tags dialog -* Fix bad data generated for null objects (Anki compatibility) -* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/21?closed=1) + +- Fix crash on no permissions on Card Browser system text menu entry +- Fix crash in widget if external storage unmounts +- Fix crash on device reboot if no permissions +- Fix crash if deck picker background image too large +- Fix crash in tags dialog +- Fix bad data generated for null objects (Anki compatibility) +- [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/21?closed=1) ## Version 2.10.2 (2020-05-14) -* Fix type answer cards not rendering correctly -* Fix type answer card template creation on non-English new installs -* Fix frequent full sync caused by incorrect learning card counts -* Fix crash importing into fresh install with no storage permission + +- Fix type answer cards not rendering correctly +- Fix type answer card template creation on non-English new installs +- Fix frequent full sync caused by incorrect learning card counts +- Fix crash importing into fresh install with no storage permission ## Version 2.10.1 (2020-05-13) -* Updated all translations from crowdin translators -* Fix crash note editor on rapid back button -* Fix crash from incorrect Thai translation + +- Updated all translations from crowdin translators +- Fix crash note editor on rapid back button +- Fix crash from incorrect Thai translation ## Version 2.10 (2020-05-12) -* Add welcome dialog explaining need for storage permission -* Add support for Flags on cards (including flagging by gesture) -* Add ability to set background image in Deck Picker -* Add localization of standard templates created in fresh install -* Add support for card javascript to reload current card programmatically -* Add support for restricted learning / classroom devices -* Add preference to disable "Extended Text UI" full-screen editor -* Add CSS style capability to heavy checkmark and down arrow in card -* Add display of current interval on reschedule dialog -* Add support for card javascript to answer cards programmatically -* Add ability to toggle sticky field in field editor -* Improve deck list newline, style, script tag handling in deck descriptions -* Improve whiteboard on/off state handling, especially between day/night mode -* Improve multi-selection options in CardBrowser -* Improve performance (systematic optimization process, lots of improvements!) -* Improve handling of erroneous notes (missing fields, improper clozes) -* Improve user messaging on network connection failures -* Improve counting of suspended/buried cards in advanced statistics -* Improve v2 scheduler compatibility with Anki ecosystem -* Improve handling / detection of full sync need -* Improve Anki compatibility by allowing more field/model/deck name characters -* Improve deck list estimated review times with human scale times -* Fix text scaling bug in card browser -* Fix crash in export while using v2 scheduler -* Fix Custom Tabs crash with non-default system web browser -* Fix issues with import of packages with long Unicode names -* Fix incorrect intervals on lapsed filtered v2 scheduler cards -* Fix multimedia editor save/cancel behavior -* Fix incorrect button/gesture availability while existing task is still active -* Fix type answer crash on invalid characters -* Fix cloze references not being recognized in all fields -* Fix invalid ability to change deck to a filtered deck -* Fix crashes on adding invalid images, audios, and videos -* Fix CardBrowser crash after deleting card -* Fix crash and help user if no browser detected -* Fix Reviewer crash if card not available -* Fix crash / improve import of pasted decks -* Fix clicking hint field blocks key input in Reviewer -* Fix Previewer forgetting which card to show on device rotation -* Fix Mathjax/cloze interactions -* Fix vertical alignment of touch area in full-screen review -* Fix handling of ':::' in deck names -* Fix incorrect display of HTML comments in card browser + +- Add welcome dialog explaining need for storage permission +- Add support for Flags on cards (including flagging by gesture) +- Add ability to set background image in Deck Picker +- Add localization of standard templates created in fresh install +- Add support for card javascript to reload current card programmatically +- Add support for restricted learning / classroom devices +- Add preference to disable "Extended Text UI" full-screen editor +- Add CSS style capability to heavy checkmark and down arrow in card +- Add display of current interval on reschedule dialog +- Add support for card javascript to answer cards programmatically +- Add ability to toggle sticky field in field editor +- Improve deck list newline, style, script tag handling in deck descriptions +- Improve whiteboard on/off state handling, especially between day/night mode +- Improve multi-selection options in CardBrowser +- Improve performance (systematic optimization process, lots of improvements!) +- Improve handling of erroneous notes (missing fields, improper clozes) +- Improve user messaging on network connection failures +- Improve counting of suspended/buried cards in advanced statistics +- Improve v2 scheduler compatibility with Anki ecosystem +- Improve handling / detection of full sync need +- Improve Anki compatibility by allowing more field/model/deck name characters +- Improve deck list estimated review times with human scale times +- Fix text scaling bug in card browser +- Fix crash in export while using v2 scheduler +- Fix Custom Tabs crash with non-default system web browser +- Fix issues with import of packages with long Unicode names +- Fix incorrect intervals on lapsed filtered v2 scheduler cards +- Fix multimedia editor save/cancel behavior +- Fix incorrect button/gesture availability while existing task is still active +- Fix type answer crash on invalid characters +- Fix cloze references not being recognized in all fields +- Fix invalid ability to change deck to a filtered deck +- Fix crashes on adding invalid images, audios, and videos +- Fix CardBrowser crash after deleting card +- Fix crash and help user if no browser detected +- Fix Reviewer crash if card not available +- Fix crash / improve import of pasted decks +- Fix clicking hint field blocks key input in Reviewer +- Fix Previewer forgetting which card to show on device rotation +- Fix Mathjax/cloze interactions +- Fix vertical alignment of touch area in full-screen review +- Fix handling of ':::' in deck names +- Fix incorrect display of HTML comments in card browser diff --git a/src/changelog/v2.11.md b/src/changelog/v2.11.md index a2ae936..599eda6 100644 --- a/src/changelog/v2.11.md +++ b/src/changelog/v2.11.md @@ -1,55 +1,59 @@ ## Version 2.11.3 (2020-06-17) -* Fix out-of-memory errors when importing very large decks -* Fix incorrect out-of-space message on import in Android 4 -* Fix crash if card viewer closed quickly after view -* Fix unzip fail on .apkg files >2GB -* Fix crash on edit note in browser multi-select + +- Fix out-of-memory errors when importing very large decks +- Fix incorrect out-of-space message on import in Android 4 +- Fix crash if card viewer closed quickly after view +- Fix unzip fail on .apkg files >2GB +- Fix crash on edit note in browser multi-select ## Version 2.11.2 (2020-06-10) -* Add santali language -* Fix Hebrew, Indonesian, Tagalog languages -* Improve error reporting around apkg import failures -* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/24?closed=1) + +- Add santali language +- Fix Hebrew, Indonesian, Tagalog languages +- Improve error reporting around apkg import failures +- [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/24?closed=1) ## Version 2.11.1 (2020-06-08) -* Fix crash in Card Browser multi-select mode -* Fix Custom Steps interval dialog space entry issue -* Fix flags don't export with deck -* Fix AnkiDroid API doesn't handle null model id (Anki Compatibility workaround) -* Fix translation crash in sync dialog in Azerbaijani -* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/23?closed=1) + +- Fix crash in Card Browser multi-select mode +- Fix Custom Steps interval dialog space entry issue +- Fix flags don't export with deck +- Fix AnkiDroid API doesn't handle null model id (Anki Compatibility workaround) +- Fix translation crash in sync dialog in Azerbaijani +- [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/23?closed=1) ## Version 2.11.0 (2020-06-05) -* Android minimum supported version is now 4.1 / Jelly Bean / API16 (AnkiWeb Compatibility) -* Change sibling burying should default to off (Anki Compatibility) -* Change learn cards do not go in filtered decks in v1 sched (Anki Compatibility) -* Add Browser Appearance screen, to edit Card Browser render format (Anki Compatibility) -* Add guidance in Note Editor if no cards will be generated despite full fields -* Add all translations from our crowdin.com translation site -* Add ability to decrease daily limit in custom study (Anki Compatibility) -* Add ability to block gesture handling when tapping hints in Reviewer -* Add create subdeck option in deck list long-press context menu -* Add edit note action in Card Browser multi-select mode -* Add ability to turn off 'Card Browser' system text context menu item -* Add nightMode CSS selector for card HTML (Anki Compatibility) -* Add ability to change just the case of a deck name -* Add page-up/page-down gestures -* Improve gesture handling in full-screen / immersive mode -* Improve handling of cloze deletion in TTS mode -* Improve Card Browser search from Android text selection menu -* Improve Card Browser with default hide of media filenames -* Improve Reviewer auto-advance by waiting for TTS to finish -* Improve transparent SVG display in night mode with white background -* Improve anki package import handling -* Improve AnkiWeb login form enter button handling -* Improve hardware back button handling in restore from backup -* Improve Reviewer display of un-rendered LaTeX -* Improve TTS / auto-answer combination, wait for TTS before advance -* Workaround Firefox open downloaded deck bug -* Workaround crash on Samsung devices with >500 deck reminders -* Fix card template editor mistakenly allowing add template on cloze type -* Fix language change preference -* Fix ability to unbury a deck in deck list -* Fix app bar item flicker during review -* Fix V2 scheduler learning card count after undo -* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/13?closed=1) + +- Android minimum supported version is now 4.1 / Jelly Bean / API16 (AnkiWeb Compatibility) +- Change sibling burying should default to off (Anki Compatibility) +- Change learn cards do not go in filtered decks in v1 sched (Anki Compatibility) +- Add Browser Appearance screen, to edit Card Browser render format (Anki Compatibility) +- Add guidance in Note Editor if no cards will be generated despite full fields +- Add all translations from our crowdin.com translation site +- Add ability to decrease daily limit in custom study (Anki Compatibility) +- Add ability to block gesture handling when tapping hints in Reviewer +- Add create subdeck option in deck list long-press context menu +- Add edit note action in Card Browser multi-select mode +- Add ability to turn off 'Card Browser' system text context menu item +- Add nightMode CSS selector for card HTML (Anki Compatibility) +- Add ability to change just the case of a deck name +- Add page-up/page-down gestures +- Improve gesture handling in full-screen / immersive mode +- Improve handling of cloze deletion in TTS mode +- Improve Card Browser search from Android text selection menu +- Improve Card Browser with default hide of media filenames +- Improve Reviewer auto-advance by waiting for TTS to finish +- Improve transparent SVG display in night mode with white background +- Improve anki package import handling +- Improve AnkiWeb login form enter button handling +- Improve hardware back button handling in restore from backup +- Improve Reviewer display of un-rendered LaTeX +- Improve TTS / auto-answer combination, wait for TTS before advance +- Workaround Firefox open downloaded deck bug +- Workaround crash on Samsung devices with >500 deck reminders +- Fix card template editor mistakenly allowing add template on cloze type +- Fix language change preference +- Fix ability to unbury a deck in deck list +- Fix app bar item flicker during review +- Fix V2 scheduler learning card count after undo +- [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/13?closed=1) diff --git a/src/changelog/v2.12.md b/src/changelog/v2.12.md index 40ec48b..389a6c3 100644 --- a/src/changelog/v2.12.md +++ b/src/changelog/v2.12.md @@ -1,22 +1,24 @@ ## Version 2.12.1 (2020-07-21) -* Fix bug previewing edited notes after changing field count -* Fix crash previewing edited notes from dynamic decks -* Fix crash restarting app after a crash -* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/28?closed=1) + +- Fix bug previewing edited notes after changing field count +- Fix crash previewing edited notes from dynamic decks +- Fix crash restarting app after a crash +- [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/28?closed=1) ## Version 2.12.0 (2020-07-18) -* Add Crop image feature -* Add Preview in note editor -* Add edit tags in reviewer -* Add volume buttons as gestures -* Add whiteboard pen color -* Add microphone tool bar in reviewer -* Add javascript API (check the Wiki!) -* Improve: app is 3MB smaller -* Fix: show whole tag in tags dialog -* Fix copy note copies tags too -* Fix data corruption canceling template edits -* performance and bug fixes everywhere! + +- Add Crop image feature +- Add Preview in note editor +- Add edit tags in reviewer +- Add volume buttons as gestures +- Add whiteboard pen color +- Add microphone tool bar in reviewer +- Add javascript API (check the Wiki!) +- Improve: app is 3MB smaller +- Fix: show whole tag in tags dialog +- Fix copy note copies tags too +- Fix data corruption canceling template edits +- performance and bug fixes everywhere! 11 volunteers made hundreds of individual changes this release diff --git a/src/changelog/v2.13.md b/src/changelog/v2.13.md index 198f061..d501d53 100644 --- a/src/changelog/v2.13.md +++ b/src/changelog/v2.13.md @@ -1,84 +1,90 @@ ## Version 2.13.5 (2020-10-03) -* Fix performance for fast (<1s) answers in review -* Add links to new Arabic help/manual translation -* Add back button handling to changelog display -* Add rate button to changelog -* Add warning message to handle future db upgrades -* Sync all translations from our volunteer translators (thanks everyone!) + +- Fix performance for fast (<1s) answers in review +- Add links to new Arabic help/manual translation +- Add back button handling to changelog display +- Add rate button to changelog +- Add warning message to handle future db upgrades +- Sync all translations from our volunteer translators (thanks everyone!) ## Version 2.13.4 (2020-09-29) -* Fix crash showing TagsDialog -* Fix crash in gesture detection -* Improve import interrupted error message -* Fix scheduler counts after undo -* Fix Card Browser preview after sort -* Fix button display if answer animation incomplete -* Sync all translations + +- Fix crash showing TagsDialog +- Fix crash in gesture detection +- Improve import interrupted error message +- Fix scheduler counts after undo +- Fix Card Browser preview after sort +- Fix button display if answer animation incomplete +- Sync all translations ## Version 2.13.3 (2020-09-23) -* Fix double-clicking answer buttons skipping cards -* Change missing media warning to twice-per-session not twice-per-deck -* Change answer button fade on open -* Updated all translations from volunteer crowdin.com site up to 20200923 + +- Fix double-clicking answer buttons skipping cards +- Change missing media warning to twice-per-session not twice-per-deck +- Change answer button fade on open +- Updated all translations from volunteer crowdin.com site up to 20200923 ## Version 2.13.2 (2020-09-19) -* Fix Crash rare on Card Browser exit -* Fix Crash Android 4.4 -* Fix Open Deck failures / improve related messaging -* Fix messaging for Xioami cloze workaround -* Move "set field language" after share on Note Editor context menu + +- Fix Crash rare on Card Browser exit +- Fix Crash Android 4.4 +- Fix Open Deck failures / improve related messaging +- Fix messaging for Xioami cloze workaround +- Move "set field language" after share on Note Editor context menu ## Version 2.13.1 (2020-09-17) -* Add cloze via clipboard paste workaround on MIUI/Xiaomi devices -* Fix Navigation drawer respects safe display / disable animations preference -* Fix Reviewer buttons respect safe display / disable animations preference -* Fix Deck Picker bottom bar opacity -* Fix Error message about missing content on cards -* Fix crash selecting deck that disappears during sync + +- Add cloze via clipboard paste workaround on MIUI/Xiaomi devices +- Fix Navigation drawer respects safe display / disable animations preference +- Fix Reviewer buttons respect safe display / disable animations preference +- Fix Deck Picker bottom bar opacity +- Fix Error message about missing content on cards +- Fix crash selecting deck that disappears during sync ## Version 2.13.0 (2020-09-15) -* Field tag (such as "{{Front}}") appearing in a note's field will be shown as-is in cards. -* Add Sync icon badge when changes are pending sync (can be disabled in options) -* Add Edit Note from card Preview while in Card Browser -* Add "Anki Card" to system context menu (like "Card Browser") - disabled by default -* Add Set keyboard language for specific fields in the note editor (example: one field Japanese, other field Portuguese for input). -* Add Keep keyboard open after adding a note -* Add Card properties available in JavaScript API -* Add JavaScript API versioning for scripts (basis for future plugins) -* Add Auto-Login when selecting saved user account -* Add Allow import of collection.anki21 files when under SchedV1 -* Add New screen for first-time users -* Add Button animations when answering cards -* Add Note Editor: Add shortcuts Ctrl+(Alt)+Shift+C to add a cloze. -* Fix Some cards in learning were not shown at the right time (Only if you undo/bury/suspend/reset/reschedule and the next card goes to learning mode) -* Fix Selected deck has translucent background if a deck picker background is set -* Fix Improved preview screens -* Fix Better accessibility in Deck Browser for partially sighted users -* Fix Improve visibility of "Add/Remove Option Group" -* Fix Improved messages for sync rate limiting error -* Fix Improved messages for reducing study limits -* Fix Improved messaging when collection is missing media -* Fix Improve feedback when accessing Debug Info -* Fix Add additional warnings to reschedule dialog -* Fix Whiteboard pen color can be disabled by pressing icon again -* Fix Ensure all menu items in the reviewer can be customized by "App Bar Buttons" setting -* Fix Scheduler discrepancy handling early interval on filtered decks -* Fix Exports work when cards are missing media -* Fix Crash due to logging. -* Fix Toasts used to show one more card than the number of card actually reviewed during the time box -* Fix Handle newlines properly in Note Editor Preview -* Fix Improve AnkiDroid opening animation -* Fix Show correct answer button when answering via Keyboard -* Fix "New Cards Added" Statistic -* Fix Crash when inserting a cloze when selecting text from right-to-left via keyboard -* Fix "Show Password" icon revealing saved password -* Fix Card browser still contains card after the app goes into background -* Fix Daily unbury occurs during sync if necessary -* Fix On big screen, buttons moved during loading -* Translators If some text change because of minor changes (typos) you won't have to translate it again -* Performance improvements (specifically: initial loading of large collection (lot of decks, note type, card type, fields, long templates...), card browser, deck picker startup, next card view, undo, cancelling tasks such as computing a list of card in browser) -* Dev: Massive dev workflow improvements and automated checks for our translations. -* Dev: Implement backend for CSV Importer -* Dev: Improve crash reporting on app startup -* Dev: Massive improvement in testing, especially around scheduler / card queue behavior -* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/27?closed=1) + +- Field tag (such as "{{Front}}") appearing in a note's field will be shown as-is in cards. +- Add Sync icon badge when changes are pending sync (can be disabled in options) +- Add Edit Note from card Preview while in Card Browser +- Add "Anki Card" to system context menu (like "Card Browser") - disabled by default +- Add Set keyboard language for specific fields in the note editor (example: one field Japanese, other field Portuguese for input). +- Add Keep keyboard open after adding a note +- Add Card properties available in JavaScript API +- Add JavaScript API versioning for scripts (basis for future plugins) +- Add Auto-Login when selecting saved user account +- Add Allow import of collection.anki21 files when under SchedV1 +- Add New screen for first-time users +- Add Button animations when answering cards +- Add Note Editor: Add shortcuts Ctrl+(Alt)+Shift+C to add a cloze. +- Fix Some cards in learning were not shown at the right time (Only if you undo/bury/suspend/reset/reschedule and the next card goes to learning mode) +- Fix Selected deck has translucent background if a deck picker background is set +- Fix Improved preview screens +- Fix Better accessibility in Deck Browser for partially sighted users +- Fix Improve visibility of "Add/Remove Option Group" +- Fix Improved messages for sync rate limiting error +- Fix Improved messages for reducing study limits +- Fix Improved messaging when collection is missing media +- Fix Improve feedback when accessing Debug Info +- Fix Add additional warnings to reschedule dialog +- Fix Whiteboard pen color can be disabled by pressing icon again +- Fix Ensure all menu items in the reviewer can be customized by "App Bar Buttons" setting +- Fix Scheduler discrepancy handling early interval on filtered decks +- Fix Exports work when cards are missing media +- Fix Crash due to logging. +- Fix Toasts used to show one more card than the number of card actually reviewed during the time box +- Fix Handle newlines properly in Note Editor Preview +- Fix Improve AnkiDroid opening animation +- Fix Show correct answer button when answering via Keyboard +- Fix "New Cards Added" Statistic +- Fix Crash when inserting a cloze when selecting text from right-to-left via keyboard +- Fix "Show Password" icon revealing saved password +- Fix Card browser still contains card after the app goes into background +- Fix Daily unbury occurs during sync if necessary +- Fix On big screen, buttons moved during loading +- Translators If some text change because of minor changes (typos) you won't have to translate it again +- Performance improvements (specifically: initial loading of large collection (lot of decks, note type, card type, fields, long templates...), card browser, deck picker startup, next card view, undo, cancelling tasks such as computing a list of card in browser) +- Dev: Massive dev workflow improvements and automated checks for our translations. +- Dev: Implement backend for CSV Importer +- Dev: Improve crash reporting on app startup +- Dev: Massive improvement in testing, especially around scheduler / card queue behavior +- [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/27?closed=1) diff --git a/src/changelog/v2.14.md b/src/changelog/v2.14.md index 9071ad7..a330cc8 100644 --- a/src/changelog/v2.14.md +++ b/src/changelog/v2.14.md @@ -1,91 +1,98 @@ ## Version 2.14.6 (20210309) -* Reviewer: fix "my card is blank now with 2.14.5! help!" 😱 -* Reviewer: fix Android 8/8.1 review buttons disappear (finally?) + +- Reviewer: fix "my card is blank now with 2.14.5! help!" 😱 +- Reviewer: fix Android 8/8.1 review buttons disappear (finally?) ## Version 2.14.5 (20210307) -* We really appreciate the [donations](https://opencollective.com/ankidroid), they paid for these fixes 🤝 -* NoteEditor: Android 11 users can crop! -* NoteEditor: Canceling crop twice won't delete your image -* DeckList: parent limits altered to match Desktop -* DeckList: current deck saved as correct type -* SchedulerV2: allow very small delays -* KNOWN ISSUE: [Android 8/8.1 answer buttons disappear](https://github.com/ankidroid/Anki-Android/issues/7369). Use gestures as workaround. -* Anyone with Android 8/8.1 that reproduces this and knows how to develop Android layouts? We'd love the help! + +- We really appreciate the [donations](https://opencollective.com/ankidroid), they paid for these fixes 🤝 +- NoteEditor: Android 11 users can crop! +- NoteEditor: Canceling crop twice won't delete your image +- DeckList: parent limits altered to match Desktop +- DeckList: current deck saved as correct type +- SchedulerV2: allow very small delays +- KNOWN ISSUE: [Android 8/8.1 answer buttons disappear](https://github.com/ankidroid/Anki-Android/issues/7369). Use gestures as workaround. +- Anyone with Android 8/8.1 that reproduces this and knows how to develop Android layouts? We'd love the help! ## Version 2.14.4 (20210307) -* Re-released immediately as 2.14.5 after release script issue 🤷😅 + +- Re-released immediately as 2.14.5 after release script issue 🤷😅 ## Version 2.14.3 (20210109) -* [The AnKing](https://www.youtube.com/c/TheAnKing) has graced us with a [new intro video](https://youtu.be/iuBU_OM9oAM)! 🤓 -* Still happily overwhelmed by the [donations](https://opencollective.com/ankidroid) 💪 -* Reviewer: Fix mark note keyboard shortcut -* NoteEditor: Fix to remove padding if removing formatting toolbar -* Previewer: Fix to show same card after edit -* Scheduler: Fix v1 scheduler completes deck when only learn cards due + +- [The AnKing](https://www.youtube.com/c/TheAnKing) has graced us with a [new intro video](https://youtu.be/iuBU_OM9oAM)! 🤓 +- Still happily overwhelmed by the [donations](https://opencollective.com/ankidroid) 💪 +- Reviewer: Fix mark note keyboard shortcut +- NoteEditor: Fix to remove padding if removing formatting toolbar +- Previewer: Fix to show same card after edit +- Scheduler: Fix v1 scheduler completes deck when only learn cards due ## Version 2.14.2 (20201202) -* Wow! We are humbled by the [donations](https://opencollective.com/ankidroid) 🤯 -* The resources are already going to contributors to improve the app! Thank you ❤️ -* Note Editor: Fix image crop not working first time -* Note Editor: Paste image at cursor not end -* Note Editor: Fix Ctrl+C opens preview -* Note Editor: Add menubar toggle to disable editing toolbar -* Home Screen: Fix Vivo device shortcut creation (again) -* Reviewer: Fix numeric keypad not working -* Note Editor: Fix cloze cards going to wrong deck -* Navigation Menu: Fix safe display app hang -* Preferences: Fix gestures menu translation / ordering issue -* Translations: thanks [translators!](https://crowdin.com/project/ankidroid/activity_stream) - you can help too! -* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/39?closed=1) + +- Wow! We are humbled by the [donations](https://opencollective.com/ankidroid) 🤯 +- The resources are already going to contributors to improve the app! Thank you ❤️ +- Note Editor: Fix image crop not working first time +- Note Editor: Paste image at cursor not end +- Note Editor: Fix Ctrl+C opens preview +- Note Editor: Add menubar toggle to disable editing toolbar +- Home Screen: Fix Vivo device shortcut creation (again) +- Reviewer: Fix numeric keypad not working +- Note Editor: Fix cloze cards going to wrong deck +- Navigation Menu: Fix safe display app hang +- Preferences: Fix gestures menu translation / ordering issue +- Translations: thanks [translators!](https://crowdin.com/project/ankidroid/activity_stream) - you can help too! +- [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/39?closed=1) ## Version 2.14.1 (2020-11-23) -* Always free, always open source, but you may [donate if you like 😊](https://opencollective.com/ankidroid) -* Move sync button to right of action bar (vs search) -* Fix duplicate note detection -* Fix add deck shortcut on Vivo devices -* Fix non-translatable 'Card Info' strings -* Fix suspended card handling in filtered decks -* Sync translations from volunteers on our crowdin.com site (thank you!) -* Fix crash on mismatched WebView ABIs -* Fix crash invalid filename handling while pasting image -* Fix crash selecting cards in card browser -* Fix crash Android 8 in card browser -* Fix crash in undo labeling -* Fix crash reset password when system browser not exported -* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/38?closed=1) + +- Always free, always open source, but you may [donate if you like 😊](https://opencollective.com/ankidroid) +- Move sync button to right of action bar (vs search) +- Fix duplicate note detection +- Fix add deck shortcut on Vivo devices +- Fix non-translatable 'Card Info' strings +- Fix suspended card handling in filtered decks +- Sync translations from volunteers on our crowdin.com site (thank you!) +- Fix crash on mismatched WebView ABIs +- Fix crash invalid filename handling while pasting image +- Fix crash selecting cards in card browser +- Fix crash Android 8 in card browser +- Fix crash in undo labeling +- Fix crash reset password when system browser not exported +- [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/38?closed=1) ## Version 2.14.0 (2020-11-18) -* Enabled Donations - we ❤️ you, [now you can ❤️ us 😊](https://opencollective.com/ankidroid) -* New Screen: Card Info (from Card Browser or as a Reviewer App Bar Button) -* New Screen: Help - easy access to manual, many community pages/manuals, donation page, translations -* Home screen: Add deck shortcut -* Deck Options: SchedV2: Support setting "Hard Factor" -* Card Browser: Add deck filtering -* Card Browser: Filter By Flag -* Card Browser: Adding cards defaults to selected deck -* Card Browser: Many more keyboard shortcuts -* Card Browser: Display the number of cards deleted when deleting a note -* Card Browser: Better handling of deck searches containing wildcards -* Reviewer: Basic Android TV Support -* Reviewer: New Gesture: Abort Learning & Sync -* Reviewer: Support AnkiMobile 9-area gesture touch layout -* Reviewer: Improve "Empty Card" UX -* Reviewer: Keyboard shortcuts for flags (Ctrl+1...4) -* Note Editor: Editor Toolbar (& keyboard shortcuts) - hugely requested feature! -* Note Editor Toolbar: Apply Custom Commands (& keyboard shortcuts) -* Note Editor: Paste to Insert Image -* Note Editor: Made fields full-width -* Note Editor: Change Font Size for fields -* Note Editor: Expand/Collapse Fields -* Note Editor: Clear Field button -* Note Editor: Ctrl+Shift+Num to switch fields -* Note Editor: Improved image addition / naming -* Note Editor: Add preference to convert newline to HTML (or not) -* OS Integration: Default to "Anki Card" in system context menu vs "Card Browser" -* Libanki: Add FileUpload API -* Translations: Tagged screenshots on crowdin.com to help our translators -* Stability: Fix rare crashes (down to ~50/day total w/1.8million installs!) -* Performance: massive number of speedups -* Dev: Massively sped up AnkiDroid builds and improved code readability -* Totals: 345 code changes and hundreds of translations, made by volunteers, in 2 months -* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/30?closed=1) + +- Enabled Donations - we ❤️ you, [now you can ❤️ us 😊](https://opencollective.com/ankidroid) +- New Screen: Card Info (from Card Browser or as a Reviewer App Bar Button) +- New Screen: Help - easy access to manual, many community pages/manuals, donation page, translations +- Home screen: Add deck shortcut +- Deck Options: SchedV2: Support setting "Hard Factor" +- Card Browser: Add deck filtering +- Card Browser: Filter By Flag +- Card Browser: Adding cards defaults to selected deck +- Card Browser: Many more keyboard shortcuts +- Card Browser: Display the number of cards deleted when deleting a note +- Card Browser: Better handling of deck searches containing wildcards +- Reviewer: Basic Android TV Support +- Reviewer: New Gesture: Abort Learning & Sync +- Reviewer: Support AnkiMobile 9-area gesture touch layout +- Reviewer: Improve "Empty Card" UX +- Reviewer: Keyboard shortcuts for flags (Ctrl+1...4) +- Note Editor: Editor Toolbar (& keyboard shortcuts) - hugely requested feature! +- Note Editor Toolbar: Apply Custom Commands (& keyboard shortcuts) +- Note Editor: Paste to Insert Image +- Note Editor: Made fields full-width +- Note Editor: Change Font Size for fields +- Note Editor: Expand/Collapse Fields +- Note Editor: Clear Field button +- Note Editor: Ctrl+Shift+Num to switch fields +- Note Editor: Improved image addition / naming +- Note Editor: Add preference to convert newline to HTML (or not) +- OS Integration: Default to "Anki Card" in system context menu vs "Card Browser" +- Libanki: Add FileUpload API +- Translations: Tagged screenshots on crowdin.com to help our translators +- Stability: Fix rare crashes (down to ~50/day total w/1.8million installs!) +- Performance: massive number of speedups +- Dev: Massively sped up AnkiDroid builds and improved code readability +- Totals: 345 code changes and hundreds of translations, made by volunteers, in 2 months +- [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/30?closed=1) diff --git a/src/changelog/v2.15.md b/src/changelog/v2.15.md index 30f4c3e..fabc119 100644 --- a/src/changelog/v2.15.md +++ b/src/changelog/v2.15.md @@ -1,83 +1,88 @@ ## Version 2.15.6 (20210714) -* One more crash fix, no crashes shall be left unfixed! If we can help it. + +- One more crash fix, no crashes shall be left unfixed! If we can help it. ## Version 2.15.5 (20210713) -* [🤜🤛 Thank you! Your support makes the fixes happen!](https://opencollective.com/ankidroid) -* Full-screen navigation drawer drag is a preference, default off -* Floating Action Button ('+') labels are clickable again -* Fixed crash on first run post-install on tablets -* Fixed odd weekly breakdown stats chart behavior -* Fixed crash creating new deck from deck chooser -* [Updated translations](https://crowdin.com/project/ankidroid) (thank you translators!) -* [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/47?closed=1) -* We are deep into development for v2.16 + Google Summer of Code, lots of new stuff coming -* Happy reviewing! + +- [🤜🤛 Thank you! Your support makes the fixes happen!](https://opencollective.com/ankidroid) +- Full-screen navigation drawer drag is a preference, default off +- Floating Action Button ('+') labels are clickable again +- Fixed crash on first run post-install on tablets +- Fixed odd weekly breakdown stats chart behavior +- Fixed crash creating new deck from deck chooser +- [Updated translations](https://crowdin.com/project/ankidroid) (thank you translators!) +- [Full Changelog here](https://github.com/ankidroid/Anki-Android/milestone/47?closed=1) +- We are deep into development for v2.16 + Google Summer of Code, lots of new stuff coming +- Happy reviewing! ## Version 2.15.4 (20210602) -* Saw one crash show up for 2.15.3: if you touched the 3 numbers + +- Saw one crash show up for 2.15.3: if you touched the 3 numbers instead of the deck name on the deck list on phones, it would crash -* Temporarily revert full screen navigation drawer option to fix +- Temporarily revert full screen navigation drawer option to fix ## Version 2.15.3 (20210602) -* [❤️ Thank you so much for the donations! We appreciate it ❤️](https://opencollective.com/ankidroid) -* Another batch of fixes stabilizing all the work done for AnkiDroid 2.15 -* Fix "Search All Decks" in Card Browser not searching -* Make new full screen navigation drawer open optional, default off -* Preserve edited search in card browser if navigation drawer opens -* Fix crash editing Tags dialog when switching back from another app -* Fix incorrect cloze help link -* Increase touchable area of undo icon -* Fix legacy / handebar template parsing -* Fix icon sizes for notifications and search -* Fix audio files incorrectly importing when attached -* Fix deck options "steps" showing up with lots of decimal places -* Update translations, add Kannada language -* Fix F-Droid app store publishing -* Correct navigation away from and back to Changelog -* Fix template parsing for "{{FrontSide}}" -* Fix stats tab view layout in RTL context -* Fix preview of cloze cards from note editor -* [Full changelog here](https://github.com/ankidroid/Anki-Android/milestone/45?closed=1) +- [❤️ Thank you so much for the donations! We appreciate it ❤️](https://opencollective.com/ankidroid) +- Another batch of fixes stabilizing all the work done for AnkiDroid 2.15 +- Fix "Search All Decks" in Card Browser not searching +- Make new full screen navigation drawer open optional, default off +- Preserve edited search in card browser if navigation drawer opens +- Fix crash editing Tags dialog when switching back from another app +- Fix incorrect cloze help link +- Increase touchable area of undo icon +- Fix legacy / handebar template parsing +- Fix icon sizes for notifications and search +- Fix audio files incorrectly importing when attached +- Fix deck options "steps" showing up with lots of decimal places +- Update translations, add Kannada language +- Fix F-Droid app store publishing +- Correct navigation away from and back to Changelog +- Fix template parsing for "{{FrontSide}}" +- Fix stats tab view layout in RTL context +- Fix preview of cloze cards from note editor +- [Full changelog here](https://github.com/ankidroid/Anki-Android/milestone/45?closed=1) ## Version 2.15.2 (20210526) -* [❤️ Your donations here give us the time to work on the app, thank you! ❤️](https://opencollective.com/ankidroid) -* 🔥 Hot fixes for 2.15.0 issues (See below for 2.15.0 notes 👇 it was a huge release!) -* 2.15 should have no regressions now we think 🤞 -* That means we'll slow down the releases and these popups now, sorry + thank you -* Fix another API issue breaking card add from external apps -* Fix conditional template issue that caused blank cards for some -* Fix auto-advance ignoring "no advance" setting if card had audio -* Gracefully handle corrupt collections with invalid current decks selected -* Publish to Amazon App Store again (go get AnkiDroid on your Fire devices!) -* [Issue tracker milestone here](https://github.com/ankidroid/Anki-Android/milestone/44?closed=1) +- [❤️ Your donations here give us the time to work on the app, thank you! ❤️](https://opencollective.com/ankidroid) +- 🔥 Hot fixes for 2.15.0 issues (See below for 2.15.0 notes 👇 it was a huge release!) +- 2.15 should have no regressions now we think 🤞 +- That means we'll slow down the releases and these popups now, sorry + thank you +- Fix another API issue breaking card add from external apps +- Fix conditional template issue that caused blank cards for some +- Fix auto-advance ignoring "no advance" setting if card had audio +- Gracefully handle corrupt collections with invalid current decks selected +- Publish to Amazon App Store again (go get AnkiDroid on your Fire devices!) +- [Issue tracker milestone here](https://github.com/ankidroid/Anki-Android/milestone/44?closed=1) ## Version 2.15.1 (20210525) -* [❤️ Your donations funded this rapid set of fixes, enjoy! ❤️](https://opencollective.com/ankidroid) -* 🔥 Hot fixes for 2.15.0 issues (See below for 2.15.0 notes 👇 it was a huge release!) -* Do not auto-update users to scheduler v2. Yet. -* Fix crash on undo after deck delete -* Try harder to successfully paste images -* Reviewer performance fix - only load mathjax if needed -* Fixed compatibility issue for 2.15 collections on 2.14 -* Fixed API issue breaking card add from external apps -* Fresh language translations. See a bad translation? [You can fix it easily!](https://crowdin.com/project/ankidroid) -* [Detailed issue log](https://github.com/ankidroid/Anki-Android/milestone/43?closed=1) + +- [❤️ Your donations funded this rapid set of fixes, enjoy! ❤️](https://opencollective.com/ankidroid) +- 🔥 Hot fixes for 2.15.0 issues (See below for 2.15.0 notes 👇 it was a huge release!) +- Do not auto-update users to scheduler v2. Yet. +- Fix crash on undo after deck delete +- Try harder to successfully paste images +- Reviewer performance fix - only load mathjax if needed +- Fixed compatibility issue for 2.15 collections on 2.14 +- Fixed API issue breaking card add from external apps +- Fresh language translations. See a bad translation? [You can fix it easily!](https://crowdin.com/project/ankidroid) +- [Detailed issue log](https://github.com/ankidroid/Anki-Android/milestone/43?closed=1) ## Version 2.15.0 (20210524) -* [❤️ Your donations funded these features, enjoy! ❤️](https://opencollective.com/ankidroid) -* Thanks to [Google Summer of Code](https://github.com/ankidroid/Anki-Android/wiki/Google-Summer-of-Code-2021) students for a HUGE effort! -* Way too many changes to describe, but here are the highlights: -* New timezone code supported for sync with AnkiDesktop! -* Performance, stability improvements everywhere -* General UI improvements (accessibility, dark mode, design, more) -* Many new keyboard shortcuts and gesture actions -* Languages: Added Odia, Malayalam; big RTL support improvements! -* Reviewer: Javascript API: many new methods -* Improved account login, sync conflict, card template UI -* Tags and Decks dialogs have search! -* Whiteboard: erase, pen colors, stroke width -* NoteEditor: Mathjax 3, capitalize sentences setting -* Huge quality improvements all over codebase, helps future developers -* [🚧 Full 638 item changelog here! 🚧](https://github.com/ankidroid/Anki-Android/milestone/37?closed=1) + +- [❤️ Your donations funded these features, enjoy! ❤️](https://opencollective.com/ankidroid) +- Thanks to [Google Summer of Code](https://github.com/ankidroid/Anki-Android/wiki/Google-Summer-of-Code-2021) students for a HUGE effort! +- Way too many changes to describe, but here are the highlights: +- New timezone code supported for sync with AnkiDesktop! +- Performance, stability improvements everywhere +- General UI improvements (accessibility, dark mode, design, more) +- Many new keyboard shortcuts and gesture actions +- Languages: Added Odia, Malayalam; big RTL support improvements! +- Reviewer: Javascript API: many new methods +- Improved account login, sync conflict, card template UI +- Tags and Decks dialogs have search! +- Whiteboard: erase, pen colors, stroke width +- NoteEditor: Mathjax 3, capitalize sentences setting +- Huge quality improvements all over codebase, helps future developers +- [🚧 Full 638 item changelog here! 🚧](https://github.com/ankidroid/Anki-Android/milestone/37?closed=1) diff --git a/src/changelog/v2.16.md b/src/changelog/v2.16.md index 65de867..295cf53 100644 --- a/src/changelog/v2.16.md +++ b/src/changelog/v2.16.md @@ -1,120 +1,126 @@ ## Version 2.16.5 (20230906) -* Fix potential crash in our crash report system. See: Murphy's Law -* Fix incorrect default setting for analytics opt-in. Should be default off. - * Please check your setting if you want to make sure it is off - * Note1: our analytics is always anonymized and never shared as a first step - * Note2: the backend has been disabled for months, so there should be no exposure - * Still this was in error and counter to our strict opt-in ethos. We are deeply sorry. - * We will issue a future update shortly to opt everyone out as a precaution -* Thanks again for your patience waiting for 2.16 - we're on to 2.17 work already! -* We are humbled by the [donations](https://opencollective.com/ankidroid) 🤯 + +- Fix potential crash in our crash report system. See: Murphy's Law +- Fix incorrect default setting for analytics opt-in. Should be default off. + - Please check your setting if you want to make sure it is off + - Note1: our analytics is always anonymized and never shared as a first step + - Note2: the backend has been disabled for months, so there should be no exposure + - Still this was in error and counter to our strict opt-in ethos. We are deeply sorry. + - We will issue a future update shortly to opt everyone out as a precaution +- Thanks again for your patience waiting for 2.16 - we're on to 2.17 work already! +- We are humbled by the [donations](https://opencollective.com/ankidroid) 🤯 ## Version 2.16.4 (20230827) -* Your dev team is still very excited to be able to release quick fixes for you again! -* Last big stability release for 2.16 series (see below for main 2.16 info) -* [❤️ We continue to be very thankful for your support](https://opencollective.com/ankidroid) -* Improved shortcut icons -* Fix card browser scroll position after editing a card -* Improve shared deck download handling -* Fix sound replay on cards -* Fix deck rebuild not updating UI -* Synced with [community language translations](https://crowdin.com/project/ankidroid) -* Development for 2.17 is already in progress! -* Are you still reading this? Good luck in your studies 🤓 + +- Your dev team is still very excited to be able to release quick fixes for you again! +- Last big stability release for 2.16 series (see below for main 2.16 info) +- [❤️ We continue to be very thankful for your support](https://opencollective.com/ankidroid) +- Improved shortcut icons +- Fix card browser scroll position after editing a card +- Improve shared deck download handling +- Fix sound replay on cards +- Fix deck rebuild not updating UI +- Synced with [community language translations](https://crowdin.com/project/ankidroid) +- Development for 2.17 is already in progress! +- Are you still reading this? Good luck in your studies 🤓 ## Version 2.16.3 (20230818) -* We meet Play Store requirements again, so we can release fixes quickly again! -* This is a stability release for the just-released 2.16 series (see below for 2.16 info) -* [🤜🤛 Thank you! Your support makes the fixes happen!](https://opencollective.com/ankidroid) -* Fix crash in certain cases adding images -* Fix crash exporting decks with '/' in deck name -* Fix crash displaying whiteboard menu -* Fix crash opening preferences after storage migration -* Remove camera permission (not needed for single photo use) -* Fix sync required indicator not disappearing -* Fix keyboard card answer highlighting whole card -* Fix keyboard card answer causing double-tap -* Fix incorrect deck highlight in tablet mode -* Fix display of saved card searches -* Fix inconsistent italics between Anki / AnkiDroid -* Add ability to map "reschedule" to a gesture -* Allow long preference titles to wrap -* Allow 3rd party cookies in webview to match Anki behavior -* Improve add shortcut icon -* Remove beolingus pronounce feature -* New community-provided translations from https://crowdin.com/project/ankidroid + +- We meet Play Store requirements again, so we can release fixes quickly again! +- This is a stability release for the just-released 2.16 series (see below for 2.16 info) +- [🤜🤛 Thank you! Your support makes the fixes happen!](https://opencollective.com/ankidroid) +- Fix crash in certain cases adding images +- Fix crash exporting decks with '/' in deck name +- Fix crash displaying whiteboard menu +- Fix crash opening preferences after storage migration +- Remove camera permission (not needed for single photo use) +- Fix sync required indicator not disappearing +- Fix keyboard card answer highlighting whole card +- Fix keyboard card answer causing double-tap +- Fix incorrect deck highlight in tablet mode +- Fix display of saved card searches +- Fix inconsistent italics between Anki / AnkiDroid +- Add ability to map "reschedule" to a gesture +- Allow long preference titles to wrap +- Allow 3rd party cookies in webview to match Anki behavior +- Improve add shortcut icon +- Remove beolingus pronounce feature +- New community-provided translations from https://crowdin.com/project/ankidroid ## Version 2.16.2 (20230726) -* You waited patiently nearly 3 years for this release! ⌛ Thank you -* What an effort! v2.16 contains 2,693 changes from 143 different authors 🤯 -* AnkiDroid is a labor of ❤️ with a mission to help the whole world learn more -* [you can ❤️ us back so we have more time to work on it](https://opencollective.com/ankidroid) -* “Why It Took So Long”: Scoped Storage replaces sdcard Storage - * Faster syncing and importing - * AnkiDroid no longer needs permission to access “All Files”! - * ...But you lose access to data on uninstall - * Sync, export/import, check media/database disabled during migration - * Manage Space Activity in System Settings - * Added “Backup Reminder” prompt - * [More info in our FAQ](https://github.com/ankidroid/Anki-Android/wiki/Storage-Migration-FAQ) -* A huge number of crash fixes, too many to mention -* “Auto” Day/Night theming to follow system, Android 13+ themed icon -* Added Anki “New Anki Backend option in advanced settings" - will be default in 2.17 - * We include anki 2.1.61 now, we’re fully up to date! - * Stats Heatmap - * Scheduler v3 support - * CSV Import, Text import - * Card Browser Searches - * Card Info and Deck Options from upstream -* New gesture manager, supports gamepad and bluetooth keyboard -* Translations, new languages, lots of fixes, [you can help!](https://crowdin.com/project/ankidroid/) -* Add support for hierarchical tags -* New Onboarding Screen -* New Preferences - * Icons & Better Categories - * Increase max possible backups to 99 - * Full screen navigation drawer option - * Add Preference for double-tap time interval - * “Insert Field” in Card Template Editor option - * Add "Allow sync on metered connections" option - * New “About” section - * “Developer Options” is now available -* Flags added: Pink, turquoise & purple flags as in Desktop -* Drawing Activity -* Custom Sync Server improvements - * Updated to match new Anki Desktop built-in sync server abilities - * Cleartext traffic permitted (it’s your server, use it how you like) -* Javascript AP changes: - * New bury & suspend card or note API - * New search API - * New text to speech API - * Enhanced reschedule API - * New Reset progress API - * Enable DOM storage so localStorage works -* Use language defined in ‘Language Hint’ when typing the answer -* Mathjax updated to current versions -* Double-tap floating ‘+’ Deck Picker button to add note -* Note Editor SVG, video, clipboard paste import support -* Card Previewer progress bar during preview -* Card Previewer: Show type-in answer in card previews -* Card Browser Support for Indeterminate tags when adding/removing tags -* Sync Account Add “Forgot Email” Button -* Add option to show all deck stats by default -* Add Note Gesture -* Ask to keep data when uninstalling (saves preferences too) -* Reviewer: Allow “TTS” to be moved to the Action Bar -* Note Editor: Allow the import of multiple files -* Import/Export - * Fixed many general problems with import/export - * Export just a deck - * Export just a note -* UI: Snackbars used where possible, and made much more pleasant -* UI: Matched the color of status, action and nav bar to background -* Card Browser: “Note” mode -* Whiteboard - Stylus Only Mode + +- You waited patiently nearly 3 years for this release! ⌛ Thank you +- What an effort! v2.16 contains 2,693 changes from 143 different authors 🤯 +- AnkiDroid is a labor of ❤️ with a mission to help the whole world learn more +- [you can ❤️ us back so we have more time to work on it](https://opencollective.com/ankidroid) +- “Why It Took So Long”: Scoped Storage replaces sdcard Storage + - Faster syncing and importing + - AnkiDroid no longer needs permission to access “All Files”! + - ...But you lose access to data on uninstall + - Sync, export/import, check media/database disabled during migration + - Manage Space Activity in System Settings + - Added “Backup Reminder” prompt + - [More info in our FAQ](https://github.com/ankidroid/Anki-Android/wiki/Storage-Migration-FAQ) +- A huge number of crash fixes, too many to mention +- “Auto” Day/Night theming to follow system, Android 13+ themed icon +- Added Anki “New Anki Backend option in advanced settings" - will be default in 2.17 + - We include anki 2.1.61 now, we’re fully up to date! + - Stats Heatmap + - Scheduler v3 support + - CSV Import, Text import + - Card Browser Searches + - Card Info and Deck Options from upstream +- New gesture manager, supports gamepad and bluetooth keyboard +- Translations, new languages, lots of fixes, [you can help!](https://crowdin.com/project/ankidroid/) +- Add support for hierarchical tags +- New Onboarding Screen +- New Preferences + - Icons & Better Categories + - Increase max possible backups to 99 + - Full screen navigation drawer option + - Add Preference for double-tap time interval + - “Insert Field” in Card Template Editor option + - Add "Allow sync on metered connections" option + - New “About” section + - “Developer Options” is now available +- Flags added: Pink, turquoise & purple flags as in Desktop +- Drawing Activity +- Custom Sync Server improvements + - Updated to match new Anki Desktop built-in sync server abilities + - Cleartext traffic permitted (it’s your server, use it how you like) +- Javascript AP changes: + - New bury & suspend card or note API + - New search API + - New text to speech API + - Enhanced reschedule API + - New Reset progress API + - Enable DOM storage so localStorage works +- Use language defined in ‘Language Hint’ when typing the answer +- Mathjax updated to current versions +- Double-tap floating ‘+’ Deck Picker button to add note +- Note Editor SVG, video, clipboard paste import support +- Card Previewer progress bar during preview +- Card Previewer: Show type-in answer in card previews +- Card Browser Support for Indeterminate tags when adding/removing tags +- Sync Account Add “Forgot Email” Button +- Add option to show all deck stats by default +- Add Note Gesture +- Ask to keep data when uninstalling (saves preferences too) +- Reviewer: Allow “TTS” to be moved to the Action Bar +- Note Editor: Allow the import of multiple files +- Import/Export + - Fixed many general problems with import/export + - Export just a deck + - Export just a note +- UI: Snackbars used where possible, and made much more pleasant +- UI: Matched the color of status, action and nav bar to background +- Card Browser: “Note” mode +- Whiteboard - Stylus Only Mode ## Version 2.16.1 (20230726) -* Published internally, not generally released + +- Published internally, not generally released ## Version 2.16.0 (20230726) -* Unpublished + +- Unpublished diff --git a/src/changelog/v2.2.md b/src/changelog/v2.2.md index 43ee4d4..91e430e 100644 --- a/src/changelog/v2.2.md +++ b/src/changelog/v2.2.md @@ -1,25 +1,27 @@ ## Version 2.2.3 (2014-08-04) - * New media sync protocol - * Fix 2 bugs for opening links and resuming the app - + +- New media sync protocol +- Fix 2 bugs for opening links and resuming the app + ## Version 2.2 (2014-07-21) - * Redesign layout - * Add pictures and sounds to flashcards (experimental) - * Make second column in card browser configurable - * Make images on flashcards zoomable - * Improve preview feature and access via action bar - * Simplify menus and settings - * Make slow searches in card browser cancellable - * Improve adding/removing tags - * Fix "type in the answer" and cloze deletion features - * Fix whiteboard feature - * Restore backups from within the app - * Make volume duck on any background music when sounds played - * Make playing of sounds consistent with Desktop version - * Remove animations feature due to being buggy - * Improve speed of showing cards - * Remove duplicate check dialog when adding new flashcards - * Remove swap button when adding or editing flashcards - * Remove kanji info feature (will become optional plugin in the future) - * Make minimum Android version 2.1 - * Fix lots of bugs + +- Redesign layout +- Add pictures and sounds to flashcards (experimental) +- Make second column in card browser configurable +- Make images on flashcards zoomable +- Improve preview feature and access via action bar +- Simplify menus and settings +- Make slow searches in card browser cancellable +- Improve adding/removing tags +- Fix "type in the answer" and cloze deletion features +- Fix whiteboard feature +- Restore backups from within the app +- Make volume duck on any background music when sounds played +- Make playing of sounds consistent with Desktop version +- Remove animations feature due to being buggy +- Improve speed of showing cards +- Remove duplicate check dialog when adding new flashcards +- Remove swap button when adding or editing flashcards +- Remove kanji info feature (will become optional plugin in the future) +- Make minimum Android version 2.1 +- Fix lots of bugs diff --git a/src/changelog/v2.3.md b/src/changelog/v2.3.md index f907447..95e594d 100644 --- a/src/changelog/v2.3.md +++ b/src/changelog/v2.3.md @@ -1,23 +1,25 @@ ## Version 2.3.2 (2014-11-06) - * Bug fixes: Sync, TTS, Remote images, Advanced editor, Export - * Note: This is the last version of AnkiDroid supported by AnkiWeb. Previous versions will not sync. - + +- Bug fixes: Sync, TTS, Remote images, Advanced editor, Export +- Note: This is the last version of AnkiDroid supported by AnkiWeb. Previous versions will not sync. + ## Version 2.3 (2014-10-27) - * Add new user manual - * Make statistics identical to Anki Desktop - * Fixes to media sync - * Fix bug where images were not showing - * Change layout of note editor - * Add new disable whiteboard option to reviewer and update icons - * Add full support for APKG export and import - * Add feature to email exported APKG - * Increase default number of backups and use APKG - * Make preview card accessible from card browser - * Make shared decks download with Android browser - * Add reset and reschedule feature in note editor - * Add a new notification system and icon - * Replace tutorial deck with new welcome screen - * Disable opening navigation drawer from reviewer when swipe is used - * Improve audio recording quality - * Support sticky fields when enabled in Anki Desktop - * Many other bug fixes + +- Add new user manual +- Make statistics identical to Anki Desktop +- Fixes to media sync +- Fix bug where images were not showing +- Change layout of note editor +- Add new disable whiteboard option to reviewer and update icons +- Add full support for APKG export and import +- Add feature to email exported APKG +- Increase default number of backups and use APKG +- Make preview card accessible from card browser +- Make shared decks download with Android browser +- Add reset and reschedule feature in note editor +- Add a new notification system and icon +- Replace tutorial deck with new welcome screen +- Disable opening navigation drawer from reviewer when swipe is used +- Improve audio recording quality +- Support sticky fields when enabled in Anki Desktop +- Many other bug fixes diff --git a/src/changelog/v2.4.md b/src/changelog/v2.4.md index 8a259f9..e3c6707 100644 --- a/src/changelog/v2.4.md +++ b/src/changelog/v2.4.md @@ -1,42 +1,47 @@ ## Version 2.4.4 (2015-10-20) -* Fix playback of sound files with apostrophes in file name -* Fix new card siblings not being buried for the same day -* Fix media on cards when using the Hebrew Fix option -* Fix crashes related to "Relative overdueness" and make this sort order available on AnkiDroid -* When mixing new and review cards, make their rotation more consistent with desktop + +- Fix playback of sound files with apostrophes in file name +- Fix new card siblings not being buried for the same day +- Fix media on cards when using the Hebrew Fix option +- Fix crashes related to "Relative overdueness" and make this sort order available on AnkiDroid +- When mixing new and review cards, make their rotation more consistent with desktop ## Version 2.4.3 (2015-04-21) -* Fix "unknown field" bug -* Fix crash showing welcome screen on Android 2.3 -* Fix crash caused by widget -* Fix rare crash in browser -* Fix a couple of sync issues -* Fix crash starting AnkiDroid on a small number of devices -* Update translations + +- Fix "unknown field" bug +- Fix crash showing welcome screen on Android 2.3 +- Fix crash caused by widget +- Fix rare crash in browser +- Fix a couple of sync issues +- Fix crash starting AnkiDroid on a small number of devices +- Update translations ## Version 2.4.2 (2015-03-18) -* Fix some bugs with cloze templates -* Fix a translation error + +- Fix some bugs with cloze templates +- Fix a translation error ## Version 2.4.1 (2015-03-15) -* Fix some bugs with filtered decks -* Improve importing of shared decks -* Open settings if AnkiDroid dir inaccessible -* Fix a bug with zooming -* Fix a bug where old card was still shown in reviewer after changing deck -* Fix some issues with cloze deletion -* Fix various crashes -* Update translations + +- Fix some bugs with filtered decks +- Improve importing of shared decks +- Open settings if AnkiDroid dir inaccessible +- Fix a bug with zooming +- Fix a bug where old card was still shown in reviewer after changing deck +- Fix some issues with cloze deletion +- Fix various crashes +- Update translations ## Version 2.4 (2015-01-28) - * Move "preview" feature to browser - * Add ability to change note type of existing flashcards - * Add ability to view and delete card templates - * Fix TTS for most devices - * Support playback of videos (see supported formats [here](http://developer.android.com/guide/appendix/media-formats.html)) - * Improve rendering of second column in browser - * Improve detection of swipe gestures - * Increase number of languages in Glosbe translator - * Add support for Chromebooks - * New crash report system - * Bug fixes + +- Move "preview" feature to browser +- Add ability to change note type of existing flashcards +- Add ability to view and delete card templates +- Fix TTS for most devices +- Support playback of videos (see supported formats [here](http://developer.android.com/guide/appendix/media-formats.html)) +- Improve rendering of second column in browser +- Improve detection of swipe gestures +- Increase number of languages in Glosbe translator +- Add support for Chromebooks +- New crash report system +- Bug fixes diff --git a/src/changelog/v2.5.md b/src/changelog/v2.5.md index fb5b6ac..f2f9e96 100644 --- a/src/changelog/v2.5.md +++ b/src/changelog/v2.5.md @@ -1,49 +1,54 @@ ## Version 2.5.4 (2015-12-14) -* Fix background color in overflow menu of deck picker + +- Fix background color in overflow menu of deck picker ## Version 2.5.3 (2015-12-14) -* Fix floating action button (blue +) interfering with deck list on Android 2.3 -* Fix opening apkg files from Gmail -* Fix automatic playback of consecutive videos -* Add a new launch screen -* Improve behaviour surrounding the deck overview screen -* Multiple media files can now be added to one field in the note editor -* Don't include unused media files on export -* Undo behaviour is now consistent with the desktop client (can no longer undo note edits) -* Enhancements to sync canceling -* Minor performance enhancements, crash fixes, and UI tweaks + +- Fix floating action button (blue +) interfering with deck list on Android 2.3 +- Fix opening apkg files from Gmail +- Fix automatic playback of consecutive videos +- Add a new launch screen +- Improve behaviour surrounding the deck overview screen +- Multiple media files can now be added to one field in the note editor +- Don't include unused media files on export +- Undo behaviour is now consistent with the desktop client (can no longer undo note edits) +- Enhancements to sync canceling +- Minor performance enhancements, crash fixes, and UI tweaks ## Version 2.5.2 (2015-12-04) -* Fix start-up crashes on Samsung devices running Android 4.2 -* Fix crash for new users on Android 6.0 -* Reverted to old typing method. The new method is now an option which is off by default. -* You can now click on the numbers in the right-most part of the deck list to open the deck overview screen -* Various fixes to transition animations and progress bars -* Add option to remove empty cards (previously only possible on desktop) -* Remove: Google Translate filter. In practice, this feature had no effect and is not required -* Remove: Google image search for multimedia card. The image search API has been discontinued by Google and no longer works + +- Fix start-up crashes on Samsung devices running Android 4.2 +- Fix crash for new users on Android 6.0 +- Reverted to old typing method. The new method is now an option which is off by default. +- You can now click on the numbers in the right-most part of the deck list to open the deck overview screen +- Various fixes to transition animations and progress bars +- Add option to remove empty cards (previously only possible on desktop) +- Remove: Google Translate filter. In practice, this feature had no effect and is not required +- Remove: Google image search for multimedia card. The image search API has been discontinued by Google and no longer works ## Version 2.5.1 (2015-12-01) -* Fix crash when loading deck list (could not open collection bug) -* Fix visible progress bar showing when answering card + +- Fix crash when loading deck list (could not open collection bug) +- Fix visible progress bar showing when answering card ## Version 2.5 (2015-11-30) -* Redesign of user interface to use material design -* Add new dark theme -* Simplify the study process by bypassing deck overview screen -* Add ability to add, edit, delete note types -* Add setting to enable auto-sync and a Tasker intent to trigger sync -* Replace "instant add" feature with new API for 3rd party apps to add cards directly to AnkiDroid -* "Type in the answer" input box now built into the card html itself -* Make fullscreen-mode immersive and added setting to hide answer buttons when using gestures -* Add css class for customizing card background color when night mode is enabled -* Allow changing media volume from the deck picker -* Add ability to save and view common searches in the card browser -* Browser now shows full question and answer in the results by default -* Only show tags relevant to that deck when doing custom study by tag -* Fix some bugs in the widget -* Remove "simple interface" -* Remove support for Android version 2.1 and 2.2 (minimum is now 2.3.3) -* Add support for Android 6 Marshmallow -* Disable write-ahead-logging in sqlite database -* Many other bug fixes and small improvements + +- Redesign of user interface to use material design +- Add new dark theme +- Simplify the study process by bypassing deck overview screen +- Add ability to add, edit, delete note types +- Add setting to enable auto-sync and a Tasker intent to trigger sync +- Replace "instant add" feature with new API for 3rd party apps to add cards directly to AnkiDroid +- "Type in the answer" input box now built into the card html itself +- Make fullscreen-mode immersive and added setting to hide answer buttons when using gestures +- Add css class for customizing card background color when night mode is enabled +- Allow changing media volume from the deck picker +- Add ability to save and view common searches in the card browser +- Browser now shows full question and answer in the results by default +- Only show tags relevant to that deck when doing custom study by tag +- Fix some bugs in the widget +- Remove "simple interface" +- Remove support for Android version 2.1 and 2.2 (minimum is now 2.3.3) +- Add support for Android 6 Marshmallow +- Disable write-ahead-logging in sqlite database +- Many other bug fixes and small improvements diff --git a/src/changelog/v2.6.md b/src/changelog/v2.6.md index b18fa6e..a470bc2 100644 --- a/src/changelog/v2.6.md +++ b/src/changelog/v2.6.md @@ -1,27 +1,29 @@ ## Version 2.6.1 (2016-07-08) -* Add card cycling in previewer (similar to desktop client) -* Add option to hide 'minutes left' in reviewer -* Fix language from app setting not always being used -* Fix not being able to play back new sound recording -* Fix potential crash on Android 2.3 (Gingerbread) -* Improved use of horizontal space when resizing large images -* Minor adjustment to black theme colors + +- Add card cycling in previewer (similar to desktop client) +- Add option to hide 'minutes left' in reviewer +- Fix language from app setting not always being used +- Fix not being able to play back new sound recording +- Fix potential crash on Android 2.3 (Gingerbread) +- Improved use of horizontal space when resizing large images +- Minor adjustment to black theme colors ## Version 2.6 (2016-06-14) -* Add two new themes (black, plain), selectable in preferences -* Make reviewer app bar icons customizable -* Split "hide / delete" menu in reviewer into "bury", "suspend", "delete note" -* Reviewer undo button now removes last stroke when whiteboard in use -* Add menu entry to change TTS language from reviewer -* Add more of the statistics available on the desktop client -* Add "advanced statistics" plugin (must be enabled in advanced settings) -* Add setting to configure custom sync server (advanced) -* Fix card templates created in AnkiDroid incorrectly using bold style -* Fix many importing issues (behavior now consistent with the desktop client) -* Fix long-tapping card in browser not always working -* Update sound playback button image -* Reduce size of whiteboard and gesture area for better interoperability with full screen -* Improve error messages with inaccessible collections -* Allow auto-play of HTML media elements (for templates that enable it) -* Significant updates to the content provider and API (for developers; see documentation) -* Many small bug fixes, improvements, theme adjustments, translation updates + +- Add two new themes (black, plain), selectable in preferences +- Make reviewer app bar icons customizable +- Split "hide / delete" menu in reviewer into "bury", "suspend", "delete note" +- Reviewer undo button now removes last stroke when whiteboard in use +- Add menu entry to change TTS language from reviewer +- Add more of the statistics available on the desktop client +- Add "advanced statistics" plugin (must be enabled in advanced settings) +- Add setting to configure custom sync server (advanced) +- Fix card templates created in AnkiDroid incorrectly using bold style +- Fix many importing issues (behavior now consistent with the desktop client) +- Fix long-tapping card in browser not always working +- Update sound playback button image +- Reduce size of whiteboard and gesture area for better interoperability with full screen +- Improve error messages with inaccessible collections +- Allow auto-play of HTML media elements (for templates that enable it) +- Significant updates to the content provider and API (for developers; see documentation) +- Many small bug fixes, improvements, theme adjustments, translation updates diff --git a/src/changelog/v2.7.md b/src/changelog/v2.7.md index 83db37f..486b17a 100644 --- a/src/changelog/v2.7.md +++ b/src/changelog/v2.7.md @@ -1,10 +1,11 @@ ## Version 2.7 (2016-10-16) -* Add pull-to-sync feature -* Add option to place answer buttons at the top -* Add widget to directly access "Add note" screen -* Fix issue with importing whole collections and restoring backups -* Fix deck import failing after the first successful one -* Fix cards in learning queue not being randomized -* Fix crash with fullscreen mode and hidden answer buttons -* Fix rare crash when opening deck options -* Improve support with TalkBack + +- Add pull-to-sync feature +- Add option to place answer buttons at the top +- Add widget to directly access "Add note" screen +- Fix issue with importing whole collections and restoring backups +- Fix deck import failing after the first successful one +- Fix cards in learning queue not being randomized +- Fix crash with fullscreen mode and hidden answer buttons +- Fix rare crash when opening deck options +- Improve support with TalkBack diff --git a/src/changelog/v2.8.md b/src/changelog/v2.8.md index 986e92a..278ea65 100644 --- a/src/changelog/v2.8.md +++ b/src/changelog/v2.8.md @@ -1,31 +1,35 @@ ## Version 2.8.4 (2018-04-27) -* Fix error syncing due to too many card templates + +- Fix error syncing due to too many card templates ## Version 2.8.3 (2017-11-10) -* Fix crash adding a picture from camera -* Fix add note icon disappearing in browser after search -* Fix translations from Glosbe -* Fix crash long-tapping when no deck is selected -* Fix crash entering advanced settings on some devices -* Fix incorrect graph display in statistics -* Fix deck not changing properly in statistics -* Fix rounding error in statistics weekly breakdown -* Fix spurious new deck created on model rename -* Improve error message on exception during media sync -* Improve animation when transitioning between screens -* Use a round icon on devices that support it + +- Fix crash adding a picture from camera +- Fix add note icon disappearing in browser after search +- Fix translations from Glosbe +- Fix crash long-tapping when no deck is selected +- Fix crash entering advanced settings on some devices +- Fix incorrect graph display in statistics +- Fix deck not changing properly in statistics +- Fix rounding error in statistics weekly breakdown +- Fix spurious new deck created on model rename +- Improve error message on exception during media sync +- Improve animation when transitioning between screens +- Use a round icon on devices that support it ## Version 2.8.2 (2017-02-28) -* Fix bugs showing confirmation dialogs in various places -* Fix uncommon crash showing dialog after sync + +- Fix bugs showing confirmation dialogs in various places +- Fix uncommon crash showing dialog after sync ## Version 2.8.1 (2017-02-06) -* Allow sending exported apkg to arbitrary app (e.g. Google Drive) -* Allow AnkiWeb to display a warning on sync completion -* Fix potential full-sync after sync cancellation -* Fix media sync sometimes scanning all files again -* Fix removing $ character when importing media files -* Improve automatic card answer timing when audio is played -* Improve rendering of some statistics -* Fix some crashes in the Russian, Vietnamese, and Chinese translations -* Fix crash sending exported apkg by email. NB: Export path can no longer be modified. + +- Allow sending exported apkg to arbitrary app (e.g. Google Drive) +- Allow AnkiWeb to display a warning on sync completion +- Fix potential full-sync after sync cancellation +- Fix media sync sometimes scanning all files again +- Fix removing $ character when importing media files +- Improve automatic card answer timing when audio is played +- Improve rendering of some statistics +- Fix some crashes in the Russian, Vietnamese, and Chinese translations +- Fix crash sending exported apkg by email. NB: Export path can no longer be modified. diff --git a/src/changelog/v2.9.md b/src/changelog/v2.9.md index 3708786..dd05ddb 100644 --- a/src/changelog/v2.9.md +++ b/src/changelog/v2.9.md @@ -1,124 +1,132 @@ ## Version 2.9.7 (2020-04-30) -* Fix crash / workaround deck options timer config regression in AnkiDesktop + +- Fix crash / workaround deck options timer config regression in AnkiDesktop ## Version 2.9.6 (2020-04-03) -* Fix multimedia crashes (permissions handling, image add, preview) -* Fix UI and crashes in database check (user dialog + exception handling) -* Fix Windows 10 image compatibility issue with image paths -* Fix AnkiDesktop sync compatibility issue if more than 1000 cards due -* Fix crash in card browser render -* Fix parsing of image tags in card browser -* Fix crash in StudyOptionsFragment -* Fix issue with deck options group changing on export -* Fix issue with exports containing unexpected media -* Fix issue with dynamic decks (crash fix, export fix) -* Fix high frequency issue "AnkiDroid directory is inaccessible" -* Fix high frequency WebView (card viewer) crash -* Add columns to card browser (due, ease, changed, created, edited) -* Fix card scheduler not respecting maximum intervals -* Fix card browser spins forever on images or empty strings + +- Fix multimedia crashes (permissions handling, image add, preview) +- Fix UI and crashes in database check (user dialog + exception handling) +- Fix Windows 10 image compatibility issue with image paths +- Fix AnkiDesktop sync compatibility issue if more than 1000 cards due +- Fix crash in card browser render +- Fix parsing of image tags in card browser +- Fix crash in StudyOptionsFragment +- Fix issue with deck options group changing on export +- Fix issue with exports containing unexpected media +- Fix issue with dynamic decks (crash fix, export fix) +- Fix high frequency issue "AnkiDroid directory is inaccessible" +- Fix high frequency WebView (card viewer) crash +- Add columns to card browser (due, ease, changed, created, edited) +- Fix card scheduler not respecting maximum intervals +- Fix card browser spins forever on images or empty strings ## Version 2.9.5 (2020-03-15) -* Fix crash rendering card list while updating card browser search -* Fix case-sensitivity issue with pronunciation words not being found -* Fix crash caused by auto-sync on startup showing dialog too soon -* Fix crash on preview of TTS cards showing language selectiond dialog too slowly -* Fix crash on import if collection not found -* Fix Anki ecosystem deck configuration issue for Anki Desktop users <= 2.16 -* Fix crash if user attempts to open camera or gallery and no app is available -* Fix crash building deck reminders while deck is synchronizing -* Fix crash related to audio recording stop -* Show helpful messages if import fails because device is out of space -* Fix crash when taking pictures on devices with Lollipop and older + +- Fix crash rendering card list while updating card browser search +- Fix case-sensitivity issue with pronunciation words not being found +- Fix crash caused by auto-sync on startup showing dialog too soon +- Fix crash on preview of TTS cards showing language selectiond dialog too slowly +- Fix crash on import if collection not found +- Fix Anki ecosystem deck configuration issue for Anki Desktop users <= 2.16 +- Fix crash if user attempts to open camera or gallery and no app is available +- Fix crash building deck reminders while deck is synchronizing +- Fix crash related to audio recording stop +- Show helpful messages if import fails because device is out of space +- Fix crash when taking pictures on devices with Lollipop and older ## Version 2.9.4 (2020-02-18) -* Fix crash when fetching pronunciations in note editor -* Fix issue with pronunciation words not being found -* Fix crash on startup for users with auto-sync on startup -* Fix crash on deck import when app is in background -* Fix crash for users of Google Chrome Canary -* Fix crash when adding certain audio clips -* Fix crash related to fetching Sound metadata -* Fix issue where audio plays twice + +- Fix crash when fetching pronunciations in note editor +- Fix issue with pronunciation words not being found +- Fix crash on startup for users with auto-sync on startup +- Fix crash on deck import when app is in background +- Fix crash for users of Google Chrome Canary +- Fix crash when adding certain audio clips +- Fix crash related to fetching Sound metadata +- Fix issue where audio plays twice ## Version 2.9.3 (2020-02-09) -* Fix issues with connection timeouts and new encryption library -* Fix incorrect handling of decks with ':::' in their name + +- Fix issues with connection timeouts and new encryption library +- Fix incorrect handling of decks with ':::' in their name ## Version 2.9.2 (2020-02-03) -* Add support for new AnkiWeb encryption changes -* Fix some bugs using filtered decks -* Fix crash on app startup with uninitialized collection -* Fix some issues with new cloze deletion menu -* Fix issue with Mathjax + cloze deletion -* Fix incorrect intervals bug with new scheduler -* Add various patches from Anki Desktop + +- Add support for new AnkiWeb encryption changes +- Fix some bugs using filtered decks +- Fix crash on app startup with uninitialized collection +- Fix some issues with new cloze deletion menu +- Fix issue with Mathjax + cloze deletion +- Fix incorrect intervals bug with new scheduler +- Add various patches from Anki Desktop ## Version 2.9.1 (2019-10-16) -* Fix crash reviewing on Android 5 - 7 -* Fix crash on Hungarian translation + +- Fix crash reviewing on Android 5 - 7 +- Fix crash on Hungarian translation ## Version 2.9 (2019-10-14) -* Change to new adaptive icon -* Add multi-select in the card browser (delete, change deck, reschedule) -* Add support for new Anki 2.1 scheduler -* Add support for Mathjax -* Add ability to add local audio files to notes -* Add ability to specify filename and folder on export and import -* Add ability to insert cloze in Note Editor -* Add ability to reposition cards -* Add ability to use due reminders for specific decks -* Add support for gamepad input when reviewing -* Add support for common keyboard shortcuts from Anki Desktop -* Add ability to search in Card Browser for text from system context menu -* Add ability to recognize tts HTML elements in questions and answers -* Add ability to display LaTeX rendered to SVG (vs PNG) from Anki Desktop -* Add confirmation check for full sync trigger in preferences -* Fix excessive pull-to-sync false positives. Disable when not at top of page. -* Fix some issues with focus in Note Editor -* Fix media sync errors related to file creation issues -* Fix crash related to use of camera without permission or no camera hardware -* Fix crash related to Card Browser allowing preview with no cards selected -* Fix crash in Reviewer when collection inaccessible -* Fix crash related to TTS when TTS not initialized -* Fix crash related to sdcard mount/unmount on inaccessible collection -* Fix crash related to audio button being visible after loading pronunciation media -* Fix crash when attempting to import invalid zip files -* Fix crash related to switching from split-window mode to single-window mode -* Fix crash related to missing preferences in Preference editor -* Fix crash on deck selection after deleting a deck and immediately closing app -* Fix crash in Reviewer when non-standard browser installed -* Fix type-answer field showing unexpectedly after undo in Reviewer -* Fix incorrect display of some characters when using type-answer -* Fix error related to media in subfolders not showing in Reviewer -* Fix some issues with generated flashcard html and CSS selectors -* Fix some Glosbe and Beolingus regressions -* Fix issue where new deck was created when note type was renamed -* Fix add note button disappearing from Card Browser when returning from search -* Fix some statistics display issues -* Fix incorrect display of some preferences -* Fix invisible notification bar in NoteEditor -* Fix newline characters not working in cloze deletions -* Increase max card count display from 1000 to 99999 -* Improve display handling of very long review intervals (> 68 years) -* Improve next/back buttons when using Previewer on multiple cards -* Improve handling of selected deck between statistics, card browser and deck picker -* Improve Card Browser search by restoring when returning from other activities -* Improve card focus handling when moving between Note Editor and Card Template Editor -* Improve labeling of deck-group vs deck-specific options -* Improve formatting of HTTP error codes during sync -* Improve handling of multi-touch events while whiteboard displayed -* Improve permission dialog descriptions -* Improve handling of "preview new cards" setting when creating custom study deck -* Improve Navigation Drawer performance on older devices -* Improve database check dialog with addition progress updates during check -* Use different notification channels for study reminders and general notifications -* Drop support for Android < Ice Cream Sandwich MR1 (API15, Android 4.0.3) -* Add support for more features on Chromebook (import, export, restore backup, camera) -* Add API support for card/note bury and suspend -* Add API to open Reviewer on specific decks from other apps -* Add support for HTML/Javascript debugging -* Add link to third party apps which support AnkiDroid API in advanced preferences -* Fix issue with custom sync server certificates -* Perform basic DB integrity check on app upgrade -* Introduce optional analytics reporting + +- Change to new adaptive icon +- Add multi-select in the card browser (delete, change deck, reschedule) +- Add support for new Anki 2.1 scheduler +- Add support for Mathjax +- Add ability to add local audio files to notes +- Add ability to specify filename and folder on export and import +- Add ability to insert cloze in Note Editor +- Add ability to reposition cards +- Add ability to use due reminders for specific decks +- Add support for gamepad input when reviewing +- Add support for common keyboard shortcuts from Anki Desktop +- Add ability to search in Card Browser for text from system context menu +- Add ability to recognize tts HTML elements in questions and answers +- Add ability to display LaTeX rendered to SVG (vs PNG) from Anki Desktop +- Add confirmation check for full sync trigger in preferences +- Fix excessive pull-to-sync false positives. Disable when not at top of page. +- Fix some issues with focus in Note Editor +- Fix media sync errors related to file creation issues +- Fix crash related to use of camera without permission or no camera hardware +- Fix crash related to Card Browser allowing preview with no cards selected +- Fix crash in Reviewer when collection inaccessible +- Fix crash related to TTS when TTS not initialized +- Fix crash related to sdcard mount/unmount on inaccessible collection +- Fix crash related to audio button being visible after loading pronunciation media +- Fix crash when attempting to import invalid zip files +- Fix crash related to switching from split-window mode to single-window mode +- Fix crash related to missing preferences in Preference editor +- Fix crash on deck selection after deleting a deck and immediately closing app +- Fix crash in Reviewer when non-standard browser installed +- Fix type-answer field showing unexpectedly after undo in Reviewer +- Fix incorrect display of some characters when using type-answer +- Fix error related to media in subfolders not showing in Reviewer +- Fix some issues with generated flashcard html and CSS selectors +- Fix some Glosbe and Beolingus regressions +- Fix issue where new deck was created when note type was renamed +- Fix add note button disappearing from Card Browser when returning from search +- Fix some statistics display issues +- Fix incorrect display of some preferences +- Fix invisible notification bar in NoteEditor +- Fix newline characters not working in cloze deletions +- Increase max card count display from 1000 to 99999 +- Improve display handling of very long review intervals (> 68 years) +- Improve next/back buttons when using Previewer on multiple cards +- Improve handling of selected deck between statistics, card browser and deck picker +- Improve Card Browser search by restoring when returning from other activities +- Improve card focus handling when moving between Note Editor and Card Template Editor +- Improve labeling of deck-group vs deck-specific options +- Improve formatting of HTTP error codes during sync +- Improve handling of multi-touch events while whiteboard displayed +- Improve permission dialog descriptions +- Improve handling of "preview new cards" setting when creating custom study deck +- Improve Navigation Drawer performance on older devices +- Improve database check dialog with addition progress updates during check +- Use different notification channels for study reminders and general notifications +- Drop support for Android < Ice Cream Sandwich MR1 (API15, Android 4.0.3) +- Add support for more features on Chromebook (import, export, restore backup, camera) +- Add API support for card/note bury and suspend +- Add API to open Reviewer on specific decks from other apps +- Add support for HTML/Javascript debugging +- Add link to third party apps which support AnkiDroid API in advanced preferences +- Fix issue with custom sync server certificates +- Perform basic DB integrity check on app upgrade +- Introduce optional analytics reporting diff --git a/src/contributing.md b/src/contributing.md index 43a7b86..a7ae6fe 100644 --- a/src/contributing.md +++ b/src/contributing.md @@ -5,13 +5,16 @@ AnkiDroid is an open source project, and its development relies on contributions from volunteers. Here are some of the ways you can contribute to the AnkiDroid project: ### Get involved + Rate the app, join the [AnkiDroid forum](https://groups.google.com/g/anki-android) and answer questions for other users, submit bug reports, become a [beta tester](beta-testing.md), etc. More detailed information on ways you can contribute as a non-developer can be found on the [Wiki](https://github.com/ankidroid/Anki-Android/wiki/Contributing). ### Translate -Translations of AnkiDroid and this user manual are all contributed by users, and are greatly appreciated. + +Translations of AnkiDroid and this user manual are all contributed by users, and are greatly appreciated. See the translating wiki page for detailed instructions on how to contribute translations. ### Develop -The source code for AnkiDroid is available on our main [Github page](https://github.com/ankidroid/Anki-Android), and bug fixes as well as new features are very welcome. + +The source code for AnkiDroid is available on our main [Github page](https://github.com/ankidroid/Anki-Android), and bug fixes as well as new features are very welcome. Before investing a lot of time on working on a new feature, you may like to ask on the forum first if it's likely to be merged into the main project, as not all features will be accepted. If you are just getting started with Android programming, feel free to ask on the forum for some tips and/or tasks which are suitable for beginners. diff --git a/src/deck-overview.md b/src/deck-overview.md index ad62033..382600a 100644 --- a/src/deck-overview.md +++ b/src/deck-overview.md @@ -9,25 +9,31 @@ From the deck list, if you tap the counts area you will be taken to the deck ove On this screen you can view a summary of the deck, build custom study sessions, rebuild / empty filtered decks, and change deck options. When visible, pressing the study button will take you to the study screen for that deck. ## App bar + The icons that are shown in the app bar depend on whether your deck is an ordinary deck or a filtered deck. ### Ordinary decks #### Custom Study + Tapping the wrench icon allows you to create a custom session, for example to do extra reviews outside your normal schedule, or study only certain cards inside a deck. See the [filtered deck section](filtered-deck.md) for more information on this. ### Filtered decks #### Empty deck + Tapping the cross icon will empty all of the cards in the current filtered deck (i.e. return them to their original deck). #### Rebuild deck + Tapping the rebuild icon will rebuild the current filtered deck according to the settings specified in filtered deck options. ### Overflow menu #### Deck Options + Allows you to configure some options related to the current deck, such as the number of new cards and reviews to introduce each day. Please see the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options. #### Unbury + This option is only visible when the selected deck has cards that have been manually or automatically buried. diff --git a/src/deck-picker.md b/src/deck-picker.md index aee783b..6b94f66 100644 --- a/src/deck-picker.md +++ b/src/deck-picker.md @@ -2,126 +2,158 @@ -*_Note:_* _This section onwards assumes you understand what [decks and cards](https://docs.ankiweb.net/getting-started.html#key-concepts) are_ +**Note:** _This section onwards assumes you understand what [decks and cards](https://docs.ankiweb.net/getting-started.html#key-concepts) are_ The deck list is the screen you see when you start AnkiDroid. It displays a list of the decks which contain all of your flashcards, and allows you to perform various actions: ![decks.png](img/1-decks.png) ## Add button + The big blue + button in the bottom right corner is used to add new material to AnkiDroid. Pressing it expands to give the following three options, which are also described in the [tutorial video](https://www.youtube.com/watch?v=F2K1gOSdIZA). ### Add + Choose this option if you want to create your own flashcards (notes) with AnkiDroid. "Notes" and "cards" have specific meanings in Anki, which are [explained in the main Anki manual](https://docs.ankiweb.net/getting-started.html#key-concepts). Please see the tutorial video for a quick introduction to adding notes, or refer to the [adding notes](adding-notes.md#add-note-screen) section below for more detailed information. ### Get shared decks + To download a deck of cards from the internet that another user has contributed: - 1. Ensure you're connected to the internet. - 2. Tap + and then **Get shared decks**. AnkiWeb will open. - 3. Select a category, or type in a search. - 4. Tap **Info** on a deck you'd like to study. - 5. Scroll down and tap **Download**. - 6. You browser will download the file and display a `download complete` notification. - Tap this button. - 7. AnkiDroid will appear, and show a confirmation dialog. Tap the **Add** button. - 8. When the import completes, your deck should be ready to study. + +1. Ensure you're connected to the internet. +2. Tap + and then **Get shared decks**. AnkiWeb will open. +3. Select a category, or type in a search. +4. Tap **Info** on a deck you'd like to study. +5. Scroll down and tap **Download**. +6. You browser will download the file and display a `download complete` notification. + Tap this button. +7. AnkiDroid will appear, and show a confirmation dialog. Tap the **Add** button. +8. When the import completes, your deck should be ready to study. ### Create deck + To create a new empty deck: - 1. Tap the **+** button and choose `Create deck` - 2. Choose a name for the deck, for example `New Japanese` - 3. Add cards to it following the `Add` instructions above + +1. Tap the **+** button and choose `Create deck` +2. Choose a name for the deck, for example `New Japanese` +3. Add cards to it following the `Add` instructions above ## App Bar -At the top of each screen in AnkiDroid is the App Bar, with buttons for performing various actions. + +At the top of each screen in AnkiDroid is the App Bar, with buttons for performing various actions. The following actions are available from the app bar in the deck list: ### Navigation menu button + Tapping the icon on the far left will show the [left navigation menu](drawer.md#navigation-drawer) for quickly navigating between the main parts of the app. ### Sync button + The circular button with arrows on the right is for synchronizing your cards with the cloud, as described in the [adding decks from cloud](anki-desktop.md#using-anki-desktop-with-ankidroid) section. ### Overflow menu button + On the far right is the overflow menu which contains less commonly used actions. These actions are described further below. **Hint:** long tapping on a button in the app bar anywhere in the app will display a textual hint describing what the button does! ## Studying a Deck -To study the cards in a deck, simply tap on the deck name (or the "STUDY" button on a 10" tablet), and AnkiDroid will switch to study mode. + +To study the cards in a deck, simply tap on the deck name (or the "STUDY" button on a 10" tablet), and AnkiDroid will switch to study mode. Note that the currently selected deck is highlighted with a grey background, and if you have any [filtered decks](filtered-deck.md#filtered-decks) they will be highlighted using a blue font. Filtered decks are discussed elsewhere in the manual. ## Other Deck Actions + Long tapping on a deck will show a list of other actions available to perform on that deck: ### Rename deck + Use this option to rename a deck ### Deck options + Tapping on deck options allows you to configure various deck specific study options. Please see the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options. ### Custom study + Allows you to choose from some convenient presets for studying outside of your normal schedule, for example increasing the study limit for the day. See the section on [filtered decks](filtered-deck.md#filtered-decks) for more detailed information. ### Delete deck + Use this option to delete a deck (note: this action is not reversible, although you can [restore from a backup](backups.md#automatic-backups) ### Export deck + This option can be used to share a deck with other users. See the [exporting decks](exporting.md#exporting-anki-files) section for more information. ### Unbury + This option is only visible when the selected deck has cards that have been manually or automatically buried. ### Rebuild / Empty -If the selected deck is a [filtered decks](filtered-deck.md#filtered-decks) then you also have the option to rebuild or empty the cards in it. +If the selected deck is a [filtered decks](filtered-deck.md#filtered-decks) then you also have the option to rebuild or empty the cards in it. #### Clickable areas on the decks + Each deck in the list has three clickable areas: ### Deck expander -If you are using [subdecks](https://docs.ankiweb.net/getting-started.html#decks), then a deck expander button may appear on the far left of the deck, which can be used to show / hide the subdecks. A ▶ icon means the deck has hidden subdecks which can be shown, a ▼ icon means the deck has visible subdecks that can be hidden, and no icon means that the deck has no subdecks. + +If you are using [subdecks](https://docs.ankiweb.net/getting-started.html#decks), then a deck expander button may appear on the far left of the deck, which can be used to show / hide the subdecks. A ▶ icon means the deck has hidden subdecks which can be shown, a ▼ icon means the deck has visible subdecks that can be hidden, and no icon means that the deck has no subdecks. **Note:** subdecks can be created by using the naming convention `PARENT::CHILD`. ### Deck name + This is the main clickable area, which will take you to the study screen if there are cards available to review. ### Count buttons + The count buttons on the far right of each deck act as a separate clickable area that takes you to the deck overview instead of the study screen. This can be useful if you want to quickly view the number of cards available in the deck. ## Advanced Actions + Some additional actions are located in the overflow menu for less common tasks, which are summarized below: ### Undo + After reviewing the last card in a study session, you can undo it from here. ### Check database -This can automatically fix a lot of problems with your database, and will also purge any unused tags. If you experience any problems with your collection, this is the first action you should try. ->**NOTE:** Under some circumstances, check database will move cards to a deck named _!Recovered Cards_. If this occurs, please move the cards to an appropriate deck via the [card browser](browser.md#findingsearchingbrowsing), and delete _!Recovered Cards_ when it is empty. +This can automatically fix a lot of problems with your database, and will also purge any unused tags. If you experience any problems with your collection, this is the first action you should try. + +> **NOTE:** Under some circumstances, check database will move cards to a deck named _!Recovered Cards_. If this occurs, please move the cards to an appropriate deck via the [card browser](browser.md#findingsearchingbrowsing), and delete _!Recovered Cards_ when it is empty. ### Check media + Try to run this if you experience any issues with media syncing. ### Empty cards + Remove any empty cards from your collection. See the [desktop documentation](https://docs.ankiweb.net/templates/generation.html#card-generation--deletion) for more. ### Restore from backup + Allows you to restore from one of AnkiDroid's [automatic backups](backups.md#automatic-backups) ### Manage note types + Allows you to add, edit, and delete note types. See the [customizing card layout](advanced-features/customizing-card-layout.md) section for more help with this advanced feature.Keyboard Shortcuts ### Import + Import a .apkg anki file containing a deck. See the [importing](importing/importing-anki-files.md) section for more. ### Export collection + Export entire collection as a collection.apkg file. See the [exporting](exporting.md) section for more. ## Deck Counts + Next to each deck, three numbers are displayed. The left, blue number, corresponds to how many new cards you have to learn today. Anki will introduce 20 new cards a day by default, and you can customize this number if you'd like. The red number in the middle is for the cards due to be studied today which are currently in the learning phase, and the green number is the cards which are due for review (i.e. cards which have already graduated from the learning phase). On a deck you've never studied before, these numbers will both be zero. -As explained above, tapping on the counts will take you to the deck overview screen. \ No newline at end of file +As explained above, tapping on the counts will take you to the deck overview screen. diff --git a/src/drawer.md b/src/drawer.md index 8e312a1..a1019eb 100644 --- a/src/drawer.md +++ b/src/drawer.md @@ -2,27 +2,34 @@ ![navigation_drawer.png](img/2-navigation_drawer.png) -The navigation drawer can be opened from most places in the application by pressing the left menu icon, +The navigation drawer can be opened from most places in the application by pressing the left menu icon, or alternatively swiping outwards from anywhere on the far left side of the screen. It is used for quickly navigating between different parts of the application. You can switch to the following screens: ### Decks + Takes you to the top level of the app where the list of cards are shown ([more info here](deck-picker.md)) ### Card Browser + Shows a list of all your cards ([more info here](browser.md)) ### Statistics + Helps you track your study progress ([more info in Anki manual](https://docs.ankiweb.net/stats.html#statistics) and [here](advanced-features/advanced-statistics.md)) ### Night mode + This switches the app to a dark theme which many users find is less straining on the eyes, particularly when reviewing in the dark. See the wiki for instructions on how to customize the card background and font color used in night mode. ### Settings + Allows you to customize the app ([more info here](settings.md)) ### Help + Opens this web page ### Send feedback + Get support from the AnkiDroid team diff --git a/src/editing-notes.md b/src/editing-notes.md index 24a6f93..508d361 100644 --- a/src/editing-notes.md +++ b/src/editing-notes.md @@ -1,28 +1,32 @@ # Edit Note Screen + The edit note screen can be opened by choosing edit while reviewing, or by opening a card in the browser. The edit screen is similar to the add new note screen mentioned above, with some key differences: +- Changing the deck operates on the selected card (which is underlined in the **Cards** box). + If a note type is chosen which has more than one card, only the currently selected card will be moved to the new deck. + +- Changing the **Type** dropdown selector changes to the note type edit mode. In this mode, editing the content of the note (i.e. deck, fields, etc) is disabled, + and if a custom note type with more than two fields is being used, additional buttons will appear which let you control the mapping of the fields to the new note type. - * Changing the deck operates on the selected card (which is underlined in the **Cards** box). - If a note type is chosen which has more than one card, only the currently selected card will be moved to the new deck. - - * Changing the **Type** dropdown selector changes to the note type edit mode. In this mode, editing the content of the note (i.e. deck, fields, etc) is disabled, - and if a custom note type with more than two fields is being used, additional buttons will appear which let you control the mapping of the fields to the new note type. - If a note type is selected which has less cards than the original note type, only the first n cards will be kept. For example changing from **Basic (and reversed card)** to **Basic** - will lead to only the first card being kept. To warn you of this, the text in the **Cards** box will appear red, and a confirmation dialog will be shown before the note is saved. - ->Hint: to change the type for multiple notes in one go, or to customize the mapping between cards, use the **Change note type** option in the browser on Anki Desktop. - +will lead to only the first card being kept. To warn you of this, the text in the **Cards** box will appear red, and a confirmation dialog will be shown before the note is saved. + +> Hint: to change the type for multiple notes in one go, or to customize the mapping between cards, use the **Change note type** option in the browser on Anki Desktop. + There are also several advanced options available in the main menu: ### Add note + Create a new empty note ### Copy card + Copy the current note to a new editable note ### Reset progress + Move the card to the end of the new card queue. The current state of the card is cleared, but not its revision history. ### Reschedule + Allows you to reschedule as a review card on a given date. This is useful if you have imported already-learnt material, and you want to start it off with higher initial intervals. diff --git a/src/exporting.md b/src/exporting.md index 6071295..a7e5b95 100644 --- a/src/exporting.md +++ b/src/exporting.md @@ -1,34 +1,35 @@ # Exporting Anki Files -AnkiDroid can export your flashcards in the .apkg Anki file format so that you can import them into Anki Desktop, or share them with other people. +AnkiDroid can export your flashcards in the .apkg Anki file format so that you can import them into Anki Desktop, or share them with other people. As in Anki Desktop, you can either export a [collection package or deck package](https://docs.ankiweb.net/exporting.html#packaged-decks), depending on what you are trying to achieve. There are two export options available: **include scheduling information** and **include media**. Generally the default options are sufficient, if you choose not to include scheduling information, Anki will assume that you are sharing the deck with other people, and will remove marked and leech tags so that they will have a clean copy of it. ## Exporting collection package -When exporting for use in Anki Desktop, you generally want to [export your entire collection](https://docs.ankiweb.net/exporting.html#collection-colpkg), including all your review history etc. + +When exporting for use in Anki Desktop, you generally want to [export your entire collection](https://docs.ankiweb.net/exporting.html#collection-colpkg), including all your review history etc. From the main menu in the decks screen: - 1. Tap the **Export** item in the menu. - 2. Tap **OK** using default options - 3. Tap **OK** again to email the exported collection.apkg file to yourself, or alternatively you can manually copy to your computer using USB - +1. Tap the **Export** item in the menu. +2. Tap **OK** using default options +3. Tap **OK** again to email the exported collection.apkg file to yourself, or alternatively you can manually copy to your computer using USB + To import the file on your computer: - 1. Save the file **collection.apkg** to your desktop - 2. Double-click on the file to start Anki. - 3. Confirm you wish to replace, so that the deck from your mobile device +1. Save the file **collection.apkg** to your desktop +2. Double-click on the file to start Anki. +3. Confirm you wish to replace, so that the deck from your mobile device overwrites the old data on your desktop. - 4. After importing, you can delete the apkg file on your desktop if you wish. - +4. After importing, you can delete the apkg file on your desktop if you wish. + ## Exporting deck package -If you want to share a deck in AnkiDroid with another user, you can export a deck package. + +If you want to share a deck in AnkiDroid with another user, you can export a deck package. From the main menu in the decks screen: - 1. Long tap on the deck you wish to export - 2. Tap **Export** - 3. Tap **OK** using the default options - 4. Tap **OK** again to email the exported apkg to another user - \ No newline at end of file +1. Long tap on the deck you wish to export +2. Tap **Export** +3. Tap **OK** using the default options +4. Tap **OK** again to email the exported apkg to another user diff --git a/src/filtered-deck.md b/src/filtered-deck.md index 48867b1..0a7dee3 100644 --- a/src/filtered-deck.md +++ b/src/filtered-deck.md @@ -6,7 +6,7 @@ That said, if you have a test looming, or simply want to pass some time, it's po A **filtered deck** is a temporary deck that contains cards based on various criteria, such as **forgotten today**, `is tagged 'hard'`, and so on. After studying cards in a filtered deck, or when the filtered deck is deleted, the cards are automatically returned to their original deck. -The easiest way to create a filtered deck is by long clicking on a deck and choosing the **custom study** option. +The easiest way to create a filtered deck is by long clicking on a deck and choosing the **custom study** option. Advanced users can create a filtered deck manually, by choosing **Create filtered deck** from the overflow menu in the deck list screen. diff --git a/src/gestures.md b/src/gestures.md index 5c26315..a8bd3a1 100644 --- a/src/gestures.md +++ b/src/gestures.md @@ -6,112 +6,140 @@ AnkiDroid allows you to customize the interface, so that actions you perform frequently can be accomplished quickly by using tap and swipe gestures. ### Actions + The following gestures can be used: - * Swipe up - * Swipe down - * Swipe left - * Swipe right - * Double touch - * Touch top - * Touch bottom - * Touch left - * Tough right +- Swipe up +- Swipe down +- Swipe left +- Swipe right +- Double touch +- Touch top +- Touch bottom +- Touch left +- Tough right The following actions are available for each gesture: -#### No action +#### No action + Don't do anything. Useful if you want to disable certain swipes, tap zones and so on. -#### Answer button 1 +#### Answer button 1 + When the answer screen is shown, choose the red button, indicating you wish to review the card again soon. This is useful when -you forgot a card or wish to review it more frequently. +you forgot a card or wish to review it more frequently. When the question is shown, this action (and all other answer actions below) will simply show the answer. -#### Answer button 2 -When the answer screen is shown, choose the second button from the left, +#### Answer button 2 + +When the answer screen is shown, choose the second button from the left, generally indicating you found the card hard to remember. -#### Answer button 3 +#### Answer button 3 + When the answer screen is shown, choose the third button from the left. -#### Answer button 4 +#### Answer button 4 + When the answer screen is shown, choose the fourth button from the left (when applicable). -#### Answer recommended (green) +#### Answer recommended (green) + When the answer screen is shown, choose the green button. This is the button you should end up using the most. -#### Answer better than recommended +#### Answer better than recommended + When the answer screen is shown, choose the button on the right, indicating you found the card too easy to remember and would like a much longer delay. -#### Undo +#### Undo + Undoes the last action. -#### Edit card +#### Edit card + Edits the current card. -#### Mark +#### Mark + Adds a tag called **Marked** the current note, so it can be easily found in a search. -#### Lookup expression +#### Lookup expression + When the lookup feature is enabled (in advanced settings), lookup an expression in the selected dictionary. Note: the expression needs to be copied to the clipboard before this action will work. -#### Bury card +#### Bury card + Hides the current card from review. -#### Suspend card +#### Suspend card + Prevent current card from being shown during review until you unsuspend it via the card browser. -#### Delete note +#### Delete note + Deletes the currently shown note and all of its cards. -#### Play media +#### Play media + Replay any audio on the card. -#### Abort learning +#### Abort learning + Stop reviewing and go back to the deck overview page. -#### Bury note +#### Bury note + Bury the current note (i.e. hide it until the next day). -#### Suspend note +#### Suspend note + Suspend the current note (i.e. hide it until you unsuspend it). -#### Toggle Red Flag +#### Toggle Red Flag + Enables the red flag, unless the flag is already red, in which case the flag is disabled. -#### Toggle Orange Flag +#### Toggle Orange Flag + Enables the orange flag, unless the flag is already orange, in which case the flag is disabled. -#### Toggle Green Flag +#### Toggle Green Flag + Enables the green flag, unless the flag is already green, in which case the flag is disabled. -#### Toggle Blue Flag +#### Toggle Blue Flag + Enables the blue flag, unless the flag is already blue, in which case the flag is disabled. -#### Remove Flag +#### Remove Flag + Removes the flag from the card. ## Advanced + Some less common features for advanced users are shown here -#### Collection path +#### Collection path + Change the location where AnkiDroid's data is stored (not recommended) -#### Force full sync +#### Force full sync + Tap this item to force a full upload or download on the next sync (for example, because you accidentally deleted a deck on one side and want to restore the deck rather than having its deletion synchronized). -#### Advanced Statistics +#### Advanced Statistics + Take into account the effect of future reviews in the **Forecast** graph. More info [here](advanced-features/advanced-statistics.md). ### Workarounds -#### Type answer into the card +#### Type answer into the card If you have set up your cards to ask you to type in the answer (as explained in [this section of the desktop manual](https://docs.ankiweb.net/templates/intro.html)), AnkiDroid will display a keyboard on such cards and allow you to check your answer. @@ -120,17 +148,21 @@ In order to improve user experience when working with the whiteboard and gesture For full consistency with Anki Desktop, you can enable this option which allows you to save screen area, and choose an appropriate font (e.g. Japanese vs Chinese) for the input box. #### Input Workaround + Some older devices couldn't gain focus into the text input box for typed-answer fields, so this was added (Hidden for API > 14). #### Longclick Workaround + Some older devices couldn't detect longclick for initiating selecting/copying of text, so this was added (Hidden for API > 10). - + #### Fix for Hebrew Vowels + Some older devices couldn't render Hebrew text, so this feature was added which allows the user to download and install a Hebrew font which is known to work (Hidden for API > 15). #### Text to Speech + Enable this option to have Android read out all the text on your flashcards using the default text to speech engine. Google's built-in TTS engine should work; 3rd party TTS engines may or may not. -AnkiDroid will ask you to select the language for the front and back of your cards once for each deck on the first time you review a card in that deck. +AnkiDroid will ask you to select the language for the front and back of your cards once for each deck on the first time you review a card in that deck. To change the language or disable TTS for a given deck after making your initial choice, you'll need to use the **reset languages** option described below and reconfigure for each deck. Alternatively, if you want only fragments of cards to be read aloud, or if you want to set the TTS language for multiple decks at once, you can insert `` tags into [card templates](advanced-features/customizing-card-layout.md). For example, with the following template for the back of the card @@ -147,8 +179,8 @@ Alternatively, if you want only fragments of cards to be read aloud, or if you w only the `EnglishTranslation` field will be read aloud in a British English voice; the `Example` field, lying outside the `` tag, won't be read aloud. Every `` tag needs to have the following two attributes: - * **`service`**: should be set to **`android`**, otherwise the contents of the **``** tag won't be read aloud; - * **`voice`**: used to select the TTS language; should be a [two- or three- letter language code](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes), optionally followed by an underscore and a [two-letter country or region code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). A frequently updated list of languages supported by the Google TTS engine can be found on its [Wikipedia page](https://en.wikipedia.org/wiki/Google_Text-to-Speech). +- **`service`**: should be set to **`android`**, otherwise the contents of the **``** tag won't be read aloud; +- **`voice`**: used to select the TTS language; should be a [two- or three- letter language code](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes), optionally followed by an underscore and a [two-letter country or region code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). A frequently updated list of languages supported by the Google TTS engine can be found on its [Wikipedia page](https://en.wikipedia.org/wiki/Google_Text-to-Speech). To make both AnkiDroid and the [AwesomeTTS](https://ankiatts.appspot.com) plugin to the desktop application use a TTS engine to read aloud certain card fragments, put the `` tag inside the `` tag recognised by AwesomeTTS, or vice versa. An example: @@ -165,24 +197,28 @@ AnkiDroid automatically ignores `` tags selecting an unknown TTS service. I _This feature may be removed in the future in favor of a separately downloadable plugin._ #### Lookup Dictionary + Dictionary to use to lookup words copied to the clipboard in the reviewer. After setting up a dictionary, do the following to perform the lookup: - * Longclick on the text you want to copy in the reviewer - * After selecting the word you want to copy, press the **copy** icon in the app bar at the top of the screen - * Tap once anywhere on the flashcard - * A magnifying glass icon should appear, which performs the lookup when clicked +- Longclick on the text you want to copy in the reviewer +- After selecting the word you want to copy, press the **copy** icon in the app bar at the top of the screen +- Tap once anywhere on the flashcard +- A magnifying glass icon should appear, which performs the lookup when clicked Alternatively, the lookup action can be performed via a gesture. _This feature will likely be removed in the future in favor of a plugin_ #### Reset Languages + Useful for resetting the TTS language #### eReader (up/down buttons) + Support for eReader hardware buttons (see [issue 1625](https://github.com/ankidroid/Anki-Android/issues/1625)) _This feature will likely be removed in the future in favor of a plugin_ #### eReader Double Scrolling + Double the scrolling distance when using the eReader hardware buttons diff --git a/src/getting-started.md b/src/getting-started.md index 0efee93..314d27d 100644 --- a/src/getting-started.md +++ b/src/getting-started.md @@ -1,4 +1,5 @@ # Getting started + To start using AnkiDroid, we need to add some cards to study. From the main screen, tapping the big blue plus button will allow you to either add a new **note** (i.e. create new flashcards), download shared decks (decks that other people have created and shared online), or create new empty decks. Please watch this 5 minute [tutorial video](https://www.youtube.com/watch?v=F2K1gOSdIZA), which gives an introduction to adding, downloading, and studying cards in AnkiDroid. More detailed information can be found in the sections below. diff --git a/src/help.md b/src/help.md index a2374ff..394eede 100644 --- a/src/help.md +++ b/src/help.md @@ -5,17 +5,21 @@ Before asking for help, please try searching through the [AnkiDroid Manual](intro.md), the list of [Frequently Asked Questions](https://github.com/ankidroid/Anki-Android/wiki/FAQ), and also the main [Anki Manual](https://docs.ankiweb.net) for general help with the Anki system and features, and any issues not limited to Android. ## Support + If you were unable to find what you needed in the documentation above, please visit the relevant site below: -### Non-Android-Specific Issues +### Non-Android-Specific Issues + AnkiDroid (the Android version of Anki) is created and managed independently from other Anki versions. For the PC / Web / iOS versions, and general Anki issues that are not limited to Android, please visit the main [Anki support site](https://forums.ankiweb.net). ### AnkiDroid Questions + For questions and help concerning AnkiDroid, please visit the [user forum](https://groups.google.com/g/anki-android), or you can send your questions to the forum's [public email address](mailto:public-forum@ankidroid.org) if you don't want to register on the forum. ### Bug Reports and Feature Requests -For bug reports and feature requests, please search through the current list of open issues on the [AnkiDroid issue tracker](https://github.com/ankidroid/Anki-Android/issues), and if there are no existing issues, create a new issue including as much information as possible. -For bug reports, please also include the output of **debug info** by following the steps below: + +For bug reports and feature requests, please search through the current list of open issues on the [AnkiDroid issue tracker](https://github.com/ankidroid/Anki-Android/issues), and if there are no existing issues, create a new issue including as much information as possible. +For bug reports, please also include the output of **debug info** by following the steps below: 1. Open the navigation drawer by tapping the button on the top left of the screen 2. Tap **settings** @@ -28,7 +32,8 @@ For bug reports, please also include the output of **debug info** by following t **Note:** if you are unable to open the app at all, so cannot even access **settings** then please follow [these instructions](https://github.com/ankidroid/Anki-Android/wiki/Unopenable-collections). -This **debug info** is important as it allows us to match your report with our internal crash report data. +This **debug info** is important as it allows us to match your report with our internal crash report data. ### Contributing to AnkiDroid + AnkiDroid is an open source project, and anyone is welcome to contribute (including non-developers)! For help with contributing to AnkiDroid, please first check the [contribution wiki page](https://github.com/ankidroid/Anki-Android/wiki/Contributing), and ask any further questions in the [main forum](https://groups.google.com/g/anki-android). diff --git a/src/importing/importing-anki-databases.md b/src/importing/importing-anki-databases.md index 4e11838..42c9c8b 100644 --- a/src/importing/importing-anki-databases.md +++ b/src/importing/importing-anki-databases.md @@ -1,14 +1,14 @@ # Importing Anki Databases (.anki2) - + AnkiDroid does not support directly importing Anki database (`.anki2`) files. A database import will replace your collection with the contents the provided file. If you want to perform a full replacement, you should import a `collection[.apkg/.colpkg]` created in the app with the export function. - + ## Importing anki2 files manually This is not officially supported, but `.anki2` files can manually be imported if needed, in cases of troubleshooting for example: -* Create a new folder on your Android file system -* Obtain the full path to the folder as provided by your file manager, this will typically appear as: `/storage/emulated/0/` -* Place the `.anki2` file in the newly created folder -* Rename the file to `collection.anki2` -* (If applicable) Temporarily log out of your AnkiWeb account: `Settings - AnkiDroid - AnkiWeb account` -* Open `Settings - Advanced - AnkiDroid Directory` and set the AnkiDroid Directory to the newly created folder. +- Create a new folder on your Android file system +- Obtain the full path to the folder as provided by your file manager, this will typically appear as: `/storage/emulated/0/` +- Place the `.anki2` file in the newly created folder +- Rename the file to `collection.anki2` +- (If applicable) Temporarily log out of your AnkiWeb account: `Settings - AnkiDroid - AnkiWeb account` +- Open `Settings - Advanced - AnkiDroid Directory` and set the AnkiDroid Directory to the newly created folder. diff --git a/src/importing/importing-anki-files.md b/src/importing/importing-anki-files.md index 8290832..678ac54 100644 --- a/src/importing/importing-anki-files.md +++ b/src/importing/importing-anki-files.md @@ -1,22 +1,23 @@ # Importing Anki Files -You can import Anki files (with .apkg file format) directly into AnkiDroid. Other file formats cannot be imported directly into AnkiDroid, however flashcards from most other applications can be imported into Anki Desktop on your computer, which can then be [added into AnkiDroid in the usual way](../anki-desktop.md). +You can import Anki files (with .apkg file format) directly into AnkiDroid. Other file formats cannot be imported directly into AnkiDroid, however flashcards from most other applications can be imported into Anki Desktop on your computer, which can then be [added into AnkiDroid in the usual way](../anki-desktop.md). See the [importing section of the Anki Desktop manual](https://docs.ankiweb.net/importing/intro.html) for help on importing into Anki Desktop. -As in Anki Desktop, AnkiDroid distinguishes between [the two types of .apkg files](https://docs.ankiweb.net/exporting.html) (**collection package** and **deck package**) based on the filename. Collection packages have the name **collection.colpkg**, and when imported will completely _replace all contents_ in AnkiDroid. Any apkg file which is **_not_** named something that ends in **.colpkg** will be treated as a deck package, which will be _merged with any existing content_ when imported into to AnkiDroid. +As in Anki Desktop, AnkiDroid distinguishes between [the two types of .apkg files](https://docs.ankiweb.net/exporting.html) (**collection package** and **deck package**) based on the filename. Collection packages have the name **collection.colpkg**, and when imported will completely _replace all contents_ in AnkiDroid. Any apkg file which is **_not_** named something that ends in **.colpkg** will be treated as a deck package, which will be _merged with any existing content_ when imported into to AnkiDroid. You can import .apkg Anki collection files into AnkiDroid either by opening them using the standard Android system, or by manually importing them from within AnkiDroid: ## Open the file using Android + Apkg files are automatically associated with AnkiDroid, so for example if you open a .apkg email attachment which you sent to yourself, then AnkiDroid will automatically open the file and confirm if you want to import it. Simply click OK and the apkg file will be imported. ## Import the file manually in AnkiDroid + You can also manually import .apkg files as follows: - * Connect your device to your computer using USB - * Copy the .apkg from your computer to the AnkiDroid folder on your device - * Open AnkiDroid on your device - * From the main menu in the deck list, choose *Import* - * Choose the apkg file you just copied to your device when prompted - * Tap OK - \ No newline at end of file +- Connect your device to your computer using USB +- Copy the .apkg from your computer to the AnkiDroid folder on your device +- Open AnkiDroid on your device +- From the main menu in the deck list, choose _Import_ +- Choose the apkg file you just copied to your device when prompted +- Tap OK diff --git a/src/intro.md b/src/intro.md index 17a880f..d7943db 100644 --- a/src/intro.md +++ b/src/intro.md @@ -1,6 +1,6 @@ # Introduction -Thank you for using AnkiDroid, the Android client for the popular [Anki](http://ankisrs.net) spaced repetition system. +Thank you for using AnkiDroid, the Android client for the popular [Anki](http://ankisrs.net) spaced repetition system. Anki is spaced repetition technique which is simple but highly effective. It helps you memorize things by automatically repeating them across increasing intervals based on your responses with no need for you to keep track of what to study or when to study it. You create notes (or download shared decks) with content you need to memorize, and the scheduler will make sure you see the content when you need to. diff --git a/src/keyboard-shortcuts.md b/src/keyboard-shortcuts.md index 3c0315d..f633bbf 100644 --- a/src/keyboard-shortcuts.md +++ b/src/keyboard-shortcuts.md @@ -2,65 +2,64 @@ ## Home Screen -|Shortcut|Purpose| -|-----|-----| -|A|Add Note| -|B|Card Browser| -|Y|Sync| +| Shortcut | Purpose | +| ------------ | ------------ | +| A | Add Note | +| B | Card Browser | +| Y | Sync | ## Reviewer -|Shortcut|Purpose| -|-----|-----| -|1,2,3,4|Press the nth answer button| -|Gamepad Y|Flip Card/Press the first answer button| -|Gamepad X|Flip Card/Press the second answer button| -|Gamepad B|Flip Card/Press the third answer button| -|Gamepad A|Flip Card/Press the fourth answer button| -|Space,Enter|Flip Card/Answer Good| -|e|Edit Note| -|*|Mark Note| -|-|Bury Card| -|=|Bury Note| -|@|Suspend Card| -|!|Suspend Note| -|r,F5|Replay Media| -|z|Undo +| Shortcut | Purpose | +| --------------------------------------------------- | ---------------------------------------- | +| 1,2,3,4 | Press the nth answer button | +| Gamepad Y | Flip Card/Press the first answer button | +| Gamepad X | Flip Card/Press the second answer button | +| Gamepad B | Flip Card/Press the third answer button | +| Gamepad A | Flip Card/Press the fourth answer button | +| Space,Enter | Flip Card/Answer Good | +| e | Edit Note | +| * | Mark Note | +| - | Bury Card | +| = | Bury Note | +| @ | Suspend Card | +| ! | Suspend Note | +| r,F5 | Replay Media | +| z | Undo | ## Note Editor -|Shortcut |Purpose -|-----|-----| -|Ctrl+Enter|Save Note| -|D|Select Deck| -|L|Card Template Editor| -|N|Select Note Type| -|T|Edit Tags| -|Ctrl+P|Preview Note| -|Ctrl+B|Bold| -|Ctrl+I|Italic| -|Ctrl+U|Underline| -|Ctrl+R|Insert Horizontal Rule| -|Ctrl+H|Insert Title| -|Ctrl+F|Change Font Size| -|Ctrl+M|Insert MathJax Equation| -|Ctrl+Shift+C|Insert New Cloze Deletion| -|Ctrl+Alt+Shift+C|Insert Cloze Deletion using existing number| -|Ctrl+1..0|Insert User-Defined HTML| +| Shortcut | Purpose | +| ------------------------------------------------------------ | ------------------------------------------- | +| Ctrl+Enter | Save Note | +| D | Select Deck | +| L | Card Template Editor | +| N | Select Note Type | +| T | Edit Tags | +| Ctrl+P | Preview Note | +| Ctrl+B | Bold | +| Ctrl+I | Italic | +| Ctrl+U | Underline | +| Ctrl+R | Insert Horizontal Rule | +| Ctrl+H | Insert Title | +| Ctrl+F | Change Font Size | +| Ctrl+M | Insert MathJax Equation | +| Ctrl+Shift+C | Insert New Cloze Deletion | +| Ctrl+Alt+Shift+C | Insert Cloze Deletion using existing number | +| Ctrl+1..0 | Insert User-Defined HTML | ## Card Browser -|Shortcut |Purpose| -|-----|-----| -|Ctrl+A|Select All| -|Ctrl+E|Edit Note| -|Ctrl+D|Change Deck| -|Ctrl+K|Mark Note| -|Ctrl+Alt+R|Reschedule| - +| Shortcut | Purpose | +| ------------------------------------------- | ----------- | +| Ctrl+A | Select All | +| Ctrl+E | Edit Note | +| Ctrl+D | Change Deck | +| Ctrl+K | Mark Note | +| Ctrl+Alt+R | Reschedule | ## Card Template Editor -|Shortcut |Purpose| -|-----|-----| -|Ctrl+P|Preview Changed| +| Shortcut | Purpose | +| ---------------------------- | --------------- | +| Ctrl+P | Preview Changed | diff --git a/src/removed-features.md b/src/removed-features.md index e69de29..54ca61d 100644 --- a/src/removed-features.md +++ b/src/removed-features.md @@ -0,0 +1,81 @@ +# Removed Features + +## Automatic night mode color inversion + +NOTE: Removed in AnkiDroid 2.17 + +### Feature Description + +Previously, AnkiDroid contained a very basic color inverter for card content in night mode. For example it changed white to black and black to white. It inverted _all_ colors though for example green inverts to pink. These changes were frequently unwanted. + +### Reason for removal + +This feature was introduced in 2012, before either Android or Anki had night mode functionality. + +AnkiDroid implemented Android's 'follow system' night mode functionality in 2.16, which made the functionality more +prominent. + +In 2.17, AnkiDroid was updated to use unified night mode card rendering code across the Anki ecosystem. +As color inversion was an unexpected feature for our users, and did not match Anki Desktop's behavior, it was removed. + +https://github.com/ankidroid/Anki-Android/issues/14893 + +### Action to take + +If you are impacted by these changes, you may [customizing card layout](advanced-features/customizing-card-layout.md) of +your card templates using the `night_mode` selector. The css: `filter: invert(1)` + +```css +.card { + --text-color1: black; +} + +.card.night_mode { + --text-color1: white; +} + +.title { + color: var(--text-color1); +} + +/* filter could also be used */ + +.title { + color: red; +} + +.night_mode .title { + filter: invert(100%); +} +``` + +## Gesture Action: Answer better than recommended + +NOTE: Removed in AnkiDroid 2.17 + +### Feature Description + +When the answer screen is shown, choose the button on the right, indicating you found the card too easy to remember and would like a much longer delay. + +### Reason for Removal + +Previous versions of the Anki Scheduler had a variable number of buttons. The V3 scheduler always has 4 buttons, so this option no longer has unique functionality. + +### Action to take + +The functionality is now equivalent to 'Answer easy', either reassign the action, or remove it. + +## Gesture Action: Answer recommended (green) + +NOTE: Removed in AnkiDroid 2.17 + +### Feature Description + +When the answer screen is shown, choose the green button. +This is the button you should end up using the most. + +Previous versions of the Anki Scheduler had a variable number of buttons. The V3 scheduler always has 4 buttons, so this option no longer has unique functionality. + +### Action to take + +The functionality is now equivalent to 'Answer good', either reassign the action, or remove it. diff --git a/src/reviewer.md b/src/reviewer.md index 2615c6c..abb845c 100644 --- a/src/reviewer.md +++ b/src/reviewer.md @@ -1,36 +1,43 @@ # Study Screen -Tapping on the deck name from the deck list, or the study button from the deck overview screen will take you to the study screen where you do your study. +Tapping on the deck name from the deck list, or the study button from the deck overview screen will take you to the study screen where you do your study. ![reviewer.png](img/4-reviewer.png) ## Basics + If you have not used Anki on a computer before, you may like to have a look at the first [intro video](https://docs.ankiweb.net/getting-started.html#videos) before reading on, as it explains the basic review process. On the top left of the screen you'll see three numbers. From the left, these correspond to new cards, learning cards, and cards to review. These are explained in more detail in the intro videos for the desktop program, so please [check them out](https://docs.ankiweb.net/getting-started.html#videos) if you haven't already. -When you've looked at a card's question and remembered the answer, or decided you don't know it, tap the **show answer** button. When you do, the bottom area will change to display 2-4 answer buttons, depending on how you've answered the card previously. The buttons will display the time a card will next be shown, so 10m means **10 minutes** and **5d** means **5 days**. You can tap directly on these buttons to choose a particular answer. +When you've looked at a card's question and remembered the answer, or decided you don't know it, tap the **show answer** button. When you do, the bottom area will change to display 2-4 answer buttons, depending on how you've answered the card previously. The buttons will display the time a card will next be shown, so 10m means **10 minutes** and **5d** means **5 days**. You can tap directly on these buttons to choose a particular answer. To make reviewing faster, you can configure gestures (for example taps and swipes) to answer cards without using the buttons. See the [preferences section](settings.md) for more information on configuring gestures. ## App Bar + The App Bar at the top of the study screen has several buttons for performing various common actions. The number of buttons which are shown is determined automatically by Android based on the size and resolution of your screen. If there is not enough space to show the button for a given action, then the action will be available from the menu instead. If you are unsure what a button does, you can long-tap on it to see the name of the action. The following action are available: #### Undo + Undo the answer you chose for the last card you studied (button always shown). #### Mark Card -Adds a **marked** tag to the current note, so it can be easily found in the browser. + +Adds a **marked** tag to the current note, so it can be easily found in the browser. This is useful when you want to take some action on the note at a later date, such as looking up a word when you get home. Marked cards also show a small star in the upper-right-hand corner during reviews. #### Flag Card + Adds a color coded **flag** (red, orange, green, or blue) This can be used as a general purpose indicator to differentiate your cards. Flags are represented by a number from 1-4, corresponding to the previously listed colors. #### Edit Card + Open the edit note screen, where you can change the content displayed on the flashcard (see the [editing notes section](editing-notes.md) for more help) #### Hide / Delete + Give options to bury, suspend, or delete the current note or card - **Bury card / Bury note:** Hides a card or all of the note’s cards from review until the next day. (If you want to unbury cards before then, you can choose “unbury” from the long-press menu in the [deck list](deck-picker.md), or from the [deck overview screen](deck-overview.md).) This is useful if you cannot answer the card at the moment or you want to come back to it another time. Burying can also happen automatically for cards of the same note. If cards were in learning when they are buried, they are moved back to the new card queue or review queue prior to being buried. @@ -38,18 +45,23 @@ Give options to bury, suspend, or delete the current note or card - **Delete note:** Deletes the note and all of its cards. #### Replay Audio + If the card has audio on the front or back, it will be played again. #### Enable / Disable Whiteboard + This action enables or disables the whiteboard feature for the current deck. The whiteboard feature allows you to draw on the screen, which is particularly useful for practicing drawing characters from languages such as Japanese. When the whiteboard has been enabled for the current deck, two new actions will become available for clearing and hiding the whiteboard. Disabling the whiteboard will hide these actions as well as the whiteboard itself. #### Deck options + Open the deck specific study options. See the [desktop documentation](https://docs.ankiweb.net/deck-options.html) for more information about these study options. #### Check Pronunciation + This action enables or disables the temporary audio recorder toolbar at the top of the card. This feature allows you to record your voice and replay it. It is used primarily to check your pronunciation. This toolbar is composed of three buttons: play, stop playing and record microphone audio. This tool can be used while viewing either the question or the answer. ## Reaching the end of the study session + When you've finished the cards that are due to be studied today, you'll be taken back to the decks list and shown a congratulations message. From here you can select a different deck, or if you've finished studying for the day, you can simply tap the home button in order to close AnkiDroid (and you can also do this in the middle of reviews if you wish). If you wish to keep studying the same deck further, tap on the deck again which will give you several options for continued study. Please see the [filtered deck](filtered-deck.md) section for more on custom study. diff --git a/src/rtl.md b/src/rtl.md index fb73565..d7b0687 100644 --- a/src/rtl.md +++ b/src/rtl.md @@ -3,13 +3,15 @@ Anki and AnkiDroid have full support for RTL languages such as Arabic, Hebrew, and Persian. ## Editing Fields as RTL + Fields can be marked as RTL (currently possible only from Anki Desktop) for RTL editing. When a field is marked as RTL, then the text is right-aligned in editing fields and punctuation is correctly displayed at the end (left) of sentences. Text that contains blocks of LTR characters will be properly displayed as well, with the beginning of the sentence appearing to the right of the LTR block and the end of the sentence being displayed to the left of the LTR block. Directionality is especially important for editing and creating RTL cloze deletions as the cloze format includes both neutral and LTR markup characters. Therefore it is recommended to use a separate note type for LTR cloze deletions and RTL cloze deletions. ## Displaying Fields as RTL during study + To display a field as RTL, with proper right-alignment and directionality (punctuation at left of sentences, proper flow around LTR blocks), the field should be wrapped in a div or span element with the RTL directionality specified: ```html
    -``` \ No newline at end of file +``` diff --git a/src/settings.md b/src/settings.md index 54c9664..6b7ef7c 100644 --- a/src/settings.md +++ b/src/settings.md @@ -7,41 +7,51 @@ The preferences screen can be accessed by opening the navigation drawer, and cho The Preferences screen is divided up into different sections, which are covered below. ## AnkiDroid + These are the general settings which affect the whole app: -#### AnkiWeb account +#### AnkiWeb account + Change the account used for syncing with the cloud. For more information on syncing, please see [this section](anki-desktop.md). -#### Fetch media on sync -By default, AnkiDroid will sync sounds and images as well as your cards and review history. +#### Fetch media on sync + +By default, AnkiDroid will sync sounds and images as well as your cards and review history. If you disable this option, sounds and images will not be downloaded from or uploaded to the sync server by AnkiDroid. -#### Automatic synchronization +#### Automatic synchronization + Enable this option if you want AnkiDroid to sync every time you open and close the app. There is a limit of once every ten minutes for this behavior. Once a sync begins you can cancel it by pressing your device's back button, however it can take some time for the cancellation to take effect. Users that want more fine-grained control over when sync occurred might like to use a 3rd party app like Tasker to automate synchronization. See the API documentation for more information on this. - -#### Deck for new cards + +#### Deck for new cards + The default of **Use current deck** means that Anki saves the last-used note type for each deck and selects it again then next time you choose the deck (and, in addition, will start with the current deck selected when choosing Add from anywhere). The other option, **Decide by note type,** saves the last-used deck for each note type (and opens the add window to the last-used note type when you choose Add). This may be more convenient if you always use a single note type for each deck. -#### Language +#### Language + Change the language. Note: AnkiDroid translations are contributed by volunteers. If you find missing or incorrect translations, feel free to contribute to the translation project. More details can be found on the AnkiDroid Wiki. -#### Error reporting mode +#### Error reporting mode + Control whether or not AnkiDroid asks your permission before sending error reports to our error reporting system when AnkiDroid crashes. You can also disable the reporting feature entirely if you wish. ## Notifications + This subsection allows you configure when and how AnkiDroid shows alerts in the Android notification bar. #### Notify when + **Never notify** will disable all notifications from AnkiDroid. **Pending messages available** will only show important status updates like when a sync completed. **More than n cards due** will show a notification when you have more than n cards due (requires the widget to be enabled). -#### Vibrate +#### Vibrate + Checking this will make your device vibrate when showing a notification -#### Blink light -Checking this will make your device light blink when an unread notification exists (if your device has a notification LED) +#### Blink light +Checking this will make your device light blink when an unread notification exists (if your device has a notification LED) ## Reviewing @@ -49,78 +59,102 @@ The reviewing screen allows you to customize how AnkiDroid behaves when you're reviewing cards. Note that only the reviewing settings which are applied to **all decks** are shown here. There are more settings related to reviewing which are **deck specific**. These deck specific settings are located in **Deck options**. #### New card position + Controls when new cards are shown: either mixed with, after, or before all reviews. #### Start of next day -Controls when AnkiDroid should start showing the next day's cards. + +Controls when AnkiDroid should start showing the next day's cards. The default setting of 4AM ensures that if you're studying around midnight, you won't have two days worth of cards shown to you in one session. If you stay up very late or wake up very early, you may want to adjust this to a time you're usually sleeping. #### Learn ahead limit + The Learn ahead limit tells AnkiDroid how to behave when there is nothing left to study in the current deck but cards in learning. The default setting of 20 minutes tells AnkiDroid that cards should be shown early if they are due to be shown in less than 20 minutes and there's nothing else to do. If you set this to 0, Anki will always wait the full period, showing the congratulations screen until the remaining cards are ready to be reviewed. -#### Timebox limit +#### Timebox limit + Timeboxing is a technique to help you focus by dividing a longer activity (such as a 30 minute study session) into smaller blocks. If you set the timebox time limit to a non-zero number of minutes, AnkiDroid will periodically show a message saying you how many cards you've managed to study during the prescribed time limit. ## Display + This subsection relates to the way cards are displayed during reviewing #### Keep screen on + Ignore the automatic screen timeout setting in Android to always keep the screen on. #### Fullscreen mode + Switches to an immersive fullscreen mode so that you can use more of the screen. You can choose between **Hide the system bars** which will hide the system status bar, action bar, and bottom navigation buttons. Alternatively you can choose **Hide the system bars and answer buttons**, which will hide everything except for the actual card content itself. You can temporarily exit fullscreen mode by swiping inwards (i.e. down or up) from the system bars. _Note that immersive fullscreen mode is only supported on Android 4.4+_ -#### Center align +#### Center align + By default AnkiDroid tries to show cards exactly as they are shown on Anki Desktop, however if you prefer your cards to be center aligned vertically in AnkiDroid then you can enable this feature. #### Show button time + By default, the answer buttons will display the time a card will next be shown. If you disable this option, the times will not appear, and only labels like **Again**, **Good** and **Easy** will be shown. #### Card zoom + Here you can increase the zoom level of the card content (excluding images). You can use this option if you want to increase the font size for all cards. #### Image zoom + Here you can increase the zoom level of any images embedded in your cards. #### Answer button size + If you find it difficult to press the answer button, you can use this setting to make it bigger. #### Show remaining + Disabling this allows you to hide the card count in the top left of the screen. ## Whiteboard + This subsection controls the whiteboard in the reviewer. Note: the whiteboard must be enabled in each deck individually from the menu in the study screen. #### Stroke width + Control the stroke width of the whiteboard. Reducing the stroke width may allow you to draw with more detail. #### Black strokes + Use black strokes instead of color, which may reduce memory usage. Note: this setting doesn't apply when night mode is enabled. ## Automatic display answer + The automatic display answer feature allows you to have the answer shown automatically after some timeout period. You can also have the next question shown automatically; in this case the card is assumed to be failed (i.e. the again button is automatically chosen) #### Time to show answer + Time to wait until answer is automatically shown #### Time to show next question + Time to wait until next question is automatically shown. ## Fonts -In this screen you can change the font used by AnkiDroid, and some scaling options related to fonts. + +In this screen you can change the font used by AnkiDroid, and some scaling options related to fonts. See the [custom fonts](advanced-features/custom-fonts.md) section for more information about using custom fonts. #### Default font + Choose the default font used by the AnkiDroid reviewer. You can add fonts to this list by copying them to the **fonts** folder. #### Default font applicability + The default setting is to only use the default font when no font has been specified in the card styling via Anki Desktop, however you can also force the default font to be applied, ignoring any font specification in the card styling. #### Browser and editor font + The font to be used by the browser and editor #### Card browser font scaling + Lets you change the font size used in the card browser. diff --git a/src/storage-migration-error.md b/src/storage-migration-error.md index e69de29..16d8ba1 100644 --- a/src/storage-migration-error.md +++ b/src/storage-migration-error.md @@ -0,0 +1,54 @@ +# Unexpected error during Storage Migration + +There was an error copying your media to a folder supported by Android R. Before the process started, your data was backed up to AnkiWeb and can be restored. + +Before continuing, please: + +1. Take a backup of your collection (including scheduling + media) via Deck Picker -> Export collection + + - See [Manual Backups](#manual-backups) if you desire a file-based backup + +2. Report the error to us: https://docs.ankidroid.org/help.html#_support + +### Restoring from AnkiWeb Backup + +If you have reviewed a significant number of cards using AnkiDroid since the migration started, see: [Modified Collection](#restoring-a-modified-collection) + +- Reinstall AnkiDroid + - Do not keep app data on uninstall. (_Ensure you have backed up, this will delete the AnkiDroid collection, media and backups from the AnkiDroid folder_) +- Open AnkiDroid, select "Sync from AnkiWeb", + - Log in and re-sync your collection + - Syncing will be significantly faster than AnkiDroid 2.15 +- Once you are synced, you may delete the folder collection in `/storage/emulated/0/AnkiDroid` to save space. +- Your collection is now located at `/storage/emulated/0/Android/data/com.ichi2.anki/files` + +### Restoring a Modified Collection + +_Ensure that you have backed up your collection and media_ + +- Uninstall AnkiDroid + - Do not keep app data. (**This will delete the AnkiDroid collection, media and backups**) +- Reinstall AnkiDroid +- Select _Get Statred_ +- Select _Deck Picker -> Import_ +- Import the backup which was created +- Open a file browser and browse to `/storage/emulated/0/Android/data/com.ichi2.anki/files` +- Delete the `collection.media` folder and file: `collection.media.ad.db2`. Delete `collection.media.ad.db2-journal` if it exists. +- Sync with AnkiWeb and your missing media will be downloaded + +### Personalised Help + +If you require personalised help, please contact us using one of the following: + +- [Mailing List](https://groups.google.com/g/anki-android) +- [Discord](https://discord.gg/qjzcRTx) (`#help` and/or `#mobile-apps`) +- [Our Reddit community](https://www.reddit.com/r/Anki/) +- [AnkiWeb forums](https://forums.ankiweb.net/c/ankidroid/16) + +### Manual Backups + +- Your migrated data exists at the folder listed in _Settings -> Advanced -> AnkiDroid directory_. This is typically: `/storage/emulated/0/Android/data/com.ichi2.anki/files` + - If you installed a parallel build, replace `com.ichi2.anki` with `com.ichi2.anki.A` + - Some file managers will be unable to access this folder. You should be able to access this folder via USB. + - Android will offer to delete this folder when AnkiDroid is uninstalled +- Your non-migrated media and backups of your collection exist at `/storage/emulated/0/AnkiDroid` From 3e47e679a012e31969b827d7af839eaa0891bf07 Mon Sep 17 00:00:00 2001 From: krmanik <12841290+krmanik@users.noreply.github.com> Date: Fri, 2 Feb 2024 21:10:52 +0800 Subject: [PATCH 10/11] fix url --- .github/workflows/publish.yml | 2 +- theme/head.hbs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 859ec3e..05956ad 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -19,7 +19,7 @@ concurrency: env: CARGO_TERM_COLOR: always # Update the language picker in index.hbs to link new languages. - LANGUAGES: ar ja zh-CN + LANGUAGES: ar ja ru zh-CN jobs: publish: diff --git a/theme/head.hbs b/theme/head.hbs index 2f9001b..13c6108 100644 --- a/theme/head.hbs +++ b/theme/head.hbs @@ -1,5 +1,6 @@

    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 PuYf4ZslBLzn}z%jM - - - - - - - - #303030 - - - diff --git a/icons/favicon-16x16.png b/icons/favicon-16x16.png deleted file mode 100644 index c9324422e86d5656845ccf8fd6d2620972fa87e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1275 zcmZ`%X;4#F6uuf-C_xRN1T_dsZILA=0y4yQ9BB|z1d*ju7+SIbMWKSGRgf~NWjfQ^ z87mbRM3w>#JGitg0&Rg&WD%<%iW))!WFaAt0C{AB20IcJLvtwYUSdSeEe!cuQ#KL5gejxGy05>m?G430%_TY!dL;{fa4gjJ; z08j{tlmL9e06?7r0P89M)a=sEBkuvQmL7d5E)){zyEQsBFQ_Iuouo;uZ^mVz}I3?v}4w2m<1YRV#?0$ZI~)Ig2hKm<7k66WBYsgpH~Z zsAD1U=XxBwDrF-tO+<3xUJN+G%yDT44TXZdZ!g{Xp|P~< z+>UV3$DCk)pQO&+npO)Ij`sTX803Ktn zBeSXD#AlhuKF`SV_fO}wwr1*-8gJc#N;_Ykk~%V&!rzzkcxG3uII^61>S^Y_v-CIl zwqfGnQ;L;gT~cfI#oJ_Ol5JbV^}F|FJN+-ylX`eHVwXpW+rHebi*GPLZA@+}=sW1% z+Lw>-&63D;+bFJg0$qJ6PMuk26V9*&al%8s;UXV;L0AaSsrOV@{)1h03>^uq{&+AT zwZEhv{(zmr&;+4?D@s)sN)JJlm2TgV6COsQP&V3+fem)GFo zp<&K!3?O-u>3p)Yr*p(l8%fR{Y*9d;faG~Q&SU7=*g*eqKds+(NEBZ2AswixjzWD% RU@;s4IH6JO=8%+ge*@n~z{vmr diff --git a/icons/favicon-32x32.png b/icons/favicon-32x32.png deleted file mode 100644 index a7a898394d0b269ea774830fa5b205e743675c14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2318 zcmV+p3Gw!cP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Ra3>OIm3)}6XegFUmuSrBfR9M5cmu-xkRTam7 z_daj?GCRB7H~IoCn?g%j5n5;q1Xp7WNco^3L2N`5f`TR_hJ;2VCK3{jVj`$06c;N9 zZA|>YCqP40v|@|2Y@3>{Y|F0O7xsO2XJ%)f=ehSDKg{gxOMnF;H<=H2a_>36bMF6~ zdmnfoBbUoDHZ~R}N%DZTcFI~inWpI@`Fy@Jj$?Xzd*6?l4>xx1+=;c8a=Cnib1vsZ z#EFQASYyn-LZNV8xm@P?=b!&*08X7cg@|B``IU&st7Arfb|RMPq=I3L`E@RrYs}~K zAIiR7Zb3GiWnyBYK`FHf;Gg4`M^3~%dLpK51<&)o($LWGjlRAmBoI7`po}Qk- z^E}@elXP@+*e9NNVtD`&K|}%|6kyg0N`%A-zdTW5eMa-?RY8aE`wy4P<+s|Yij2m%0KDHS+@*a{+`fXUeL zgQG=O)@Qi1#qSQo@ToLSf6~>}l{dz0Y-?+~Mr*xADYY610EEh3rPQ^XHf{RivH;FG zs+$8RP&R^y0D=NeQWJkrs7;gKm-jO98LM=fobmASkL8cfv)|$Hta``>$*Pu-4lAdjdT3%rgW*fHCGm6xl)w6S0Ge?;3V7DfdYi- zvZa_hoO7t^hRB0EFKy!djE{5fWRfHY-W6bSa*{%!;Kgy=9fsk(prV1i;qBRqL7}1r zsVEhNV4N^kayStXhel8e#6fC>&s_}Blv*>BR!T3QR;qwXbyR;;vr^SY^}o3+SrJw@dVKq;6|AW9aL)ZTj^p2? zX<8A=)YKG7lK9zd_G9bTt-D!ky+do&4XQqMaD2-0 z;GWBx*}k$45gAF-^ubIfGj`<25&SewNs?rBCX>0}^Sm!9rOp#zv@Eu%HKy) z#>=i2dCh5+VNR4a$5QJbSSMV!D&nh~YN>y;x3~9|+its!EnBvrW@ctqG&D5q_B`*_ z)WOl5NO?>m`KEGC|kAlapk#S&kh$W}+xMXpDIbFc&uYbk^yLbYp7-^9KHvGCx8e2IUr!vzh{#)r6dQfj+#IS(gIUlGtrMEELXIL2rxX8@~@FH|2Q+tv9U6v#guYtdHl!(pT9WE`Axy)VHj>-_B~*&MMR1M zv9F=dTU__n3Rka;_<2t|7q4d{?mpC#~VkWl4RsbTUROhk) zN-30536OdULZxaA$2wtSi_ed*ZR6sW0O#C)thJ8=vDUg)AY_LiVh474Ux;` zR99D5a}-6FXsxfQK1wfAN;Nnq!^W7$1_lNWFXx{^p+K=%T;-hWcOr84U&f{R$sy_N z9g;`i$cc3#&bje8jz1?NoIZVe(f)@XdWbYl86FXwC(=^c@&{2I*#IC0000bbVXQnWMOn=I%9HW zVRU5xGB7bUEip1JGBZ>#IXW;jIx#UTFflqXFoDQ-Pyhe`C3HntbYx+4WjbwdWNBu3 z05UK!H7zkREiyAyFgZFfG&(UcD=;xSFfj0y&+GsI09SfcSaechcOY6Cgx@G{a;ABePT> o%h=S&#LUDT#0SfONT5nC0O}VJbn-$ql>h($07*qoM6N<$f>Sa@Y5)KL diff --git a/icons/favicon-96x96.png b/icons/favicon-96x96.png deleted file mode 100644 index 493f6588557928520141184d781c38c784bbb504..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8115 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 Cuz6kp diff --git a/icons/favicon.ico b/icons/favicon.ico deleted file mode 100644 index 00ea9c89b5bf61e18b14297e8a254c68a5f3557c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 C)VhWM diff --git a/icons/manifest.json b/icons/manifest.json deleted file mode 100644 index 849a981..0000000 --- a/icons/manifest.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "AnkiDroid Docs", - "icons": [ - { - "src": "\/android-chrome-36x36.png", - "sizes": "36x36", - "type": "image\/png", - "density": 0.75 - }, - { - "src": "\/android-chrome-48x48.png", - "sizes": "48x48", - "type": "image\/png", - "density": 1 - }, - { - "src": "\/android-chrome-72x72.png", - "sizes": "72x72", - "type": "image\/png", - "density": 1.5 - }, - { - "src": "\/android-chrome-96x96.png", - "sizes": "96x96", - "type": "image\/png", - "density": 2 - }, - { - "src": "\/android-chrome-144x144.png", - "sizes": "144x144", - "type": "image\/png", - "density": 3 - }, - { - "src": "\/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image\/png", - "density": 4 - } - ] -} diff --git a/icons/mstile-144x144.png b/icons/mstile-144x144.png deleted file mode 100644 index f1993ef78c65b03fe9125428f11ac7d51437f0d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11473 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 TiSwocmjKC1DN5Fe8;AZ6LVds) diff --git a/icons/mstile-150x150.png b/icons/mstile-150x150.png deleted file mode 100644 index 6b4dc09f6d9b9838f6d8ba7d338a9051e8d6ad28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10939 zcmc(FWmHt}7w$+4Lx{xCC?V3#(4d4!D?^F{(%mqGNFyyE-QC?FB{G8!jdV9icf&ou zbwAw?_wyeXGmAOv%zNJb?s%SO?=THDMM8XPd=LmksPsne9SHP@=)XTa9N-f~%~b*L zhGikEDhmSD#1PyXV*~#)n!I_Z3Ichtf3^wIncv@zuE0Y@xUjzu1c!%xQk%Q$5;fjdpW)!(8~`>a8nZ0>WpAX}n zB8Q8H776AGi9ak)Sd|xo2y3TR@xD>uZnC`8=u>!QX~{@a^~^!(ZCa!M@T=@^L4y9A zK3zOm$E2f$EcqH;1X#0EMg+E;)5ig3=sY`$0r#epdp;(sL~##=(Z1E1tOMMLvXOR| zgN(A9t@M+07j7B6XF(*d{|6}>c~$ulCf`08A-#i@xx2d) zNyx2_g&hxL_;+>M&oz(e?Vm6OeV>X~m$IUvqPnunk#UqTuWrH>qR@y8!;1MeJUl$F zE`3+8yMMwQ^j$+oN2e^8O|cxK>#KG3Y$Iw)?}6MLju7~>Ks~Hmv;2Cj{@da~XUW{A zk{Z|drYgtr@$tO?#{NeAB5~WLibr&sbW?LxCU?=$kCz(3gZQ1DjCin*RTtihG4ywq zEkgx}(s|0hxYxQvcnVafj9Voxv6a#jLDnUx3y%=<5sDl034 z*QMaj*4bT}-S%yJ!kTgUy|fmRbEfLUe)f^Rs4f?oH)aSUb=pqR@-DXLh$-8~ahHw$ ztA&XQgEI8zh5XwfX9iHp4@HL0_15RR)9|PAHGGR=d~}Ff#oka&oM=p5YGx>7j=&Fr z{JfFgyoQ-;9sgD6*WBh`>(26ShF?|(L>4)p&wU#sPk^!~vxSe-qQ>WXvDl77j6PfN~8OXN*u;$G&4 zf&ZGb0{eTxXS&bwOMa4%=oSwmdl*DCz7Ck%WQn?LTr}FvZg5>#$ovTeR;!!cg9Y=m zKTDA1gCJAY1#CD>5JXeEI!9IBD_^aH(|FR=HeVR%>vwn_v|qdvpQic>+?2*=5)!fL ziT;?uL`{QE%})}JlVw`P1z~1NmoGigYiY2#9!l_N!C>>gCj%nz_xnTs={{socHQT( z)p=b)kychL1m^Ta3Yhq~GD3b?`w=E4S^AC-xolpar54*mi5Wh^_J;z}KM3OF1oVF5 zYeTKp?EZQ(8P5`ZT1mfM5EW_0JW2DFrum^Al4>YHp`|w|XR2pkQdZ_|bg?YmLy1_Y1WV-24w?^BpQzRQ@a}@_gs>RiRng6Ts-EZ_g+IV z6Vvbi4nP3hqivZH6pN2%UO;Hxm~PAYSvq^Q`@*ETswdd`cWYqEynSbVP0djU5Q9Dy zd3j8{^PBBfW2_#pU-!%b=jpDOC~m6v@fqGvjLgj)M5c!`?F(%f%)ekTWfjVcTyk%F z+R)H|+S%Dzgu3rejREZ8w5@6oo@!q^k+Xnf>}Pj}aoNxfs7xAQmCEMUK=`_OvI zZkI0Qc6|LZY#+NY%mDe_B`A?v(Md=!0VR>$!jCI)n~8F&m+PKVcc){c(-v8V2WMV7 zP}*n$Gd(FdS#NIu!!o;XjjoxCAwo9(e*-*K%%8hLnqE+(!(&;X=mvYNjpAm^S)usN}FGEr}|EQNF-d)vET*F?zw-d0e%YF+HTMh z6kONYWCz}b|3xeJ5C10;n17iI^04N=^`c|Y*gZyTZSbQhN&R^)N*yE^&XK)5(rSJg6muzM?mOM z*{gW8*psAxiM}TR*aXyGUS1vTM%@AP(>v+j`z>>Z9`h_sjg5ncUhM>QL?}_=w7pkK zaf1}{H7&{Px-X~q&NW;l*zF(hVJVf3+Siar7#pXzc1JBqXFUCnv{Z*WEjbSqXV~SglMFq^}f5 zjV+tZ6TX5WOY+Y%(?eCKBo`tvbOIP2d9mPqu)U5>x=7rCvOflnvXCu&*SY2RKE1|t zsqZn-G~JNETSnFribQKp$y7g`l|v5>Lr3M{0~ftS%C~W@A}A*?$lAt6l(BB)SnHY6 zI~zN@y%x|%wu>4q48UmpykN8wyO^>zOoc|SE*EJTxOM4#&I*ovG(;bnheR%)o2g9& z{d~ko&a9^2^=1of+$-~jk2jaU7$?wRWmt=)`{l->^w5d3s;cTvJ;Rb!0ES|)ezW5< zp77jt@S2#iIgH=tWy|(tIxF!>AK!Uq%t1sqms4}Wz~hq0&oNYf)t{E$==R*a#uvjS z+a)O8q8s5&AAT|kaSfEEfR<qIVRLTiZ zqZD6N?$pRM)d=o9G%aLB?C{WA^AKcj?;^9I{&AcsN8nV!b(db_P#aDwenU@mhG(u)8-?9#HOXAlQac*V_g1ipovgO&9k%Ke7N35(y5L> z$2#bjUX&ZOY5~uUF?;uz7S9@3)-@4KmiLq=CR5qooz3NTpn#AFEldO&7OXf_ zQNRLWM~9CuEZE1JP4hd-HLP{keDaRno{Y5m!imoSGJVPWa~@>g!yw+|);bEXriGp^<$2 zoa%vg_HH(}K2#=`ml7{1Zpy`{|FueyMD&UkJ^aa_2k-=23`#(m1gmOX?DgZ2=FHSP zo4D=C8l97KVbuh@I0GXGnVw8z!pfpbJwZ!xCZ@oKXu&&1oE&(@5+~hGtDQldc8V>*&lB6y zuM%0izb%j1!F2U(<^$(>!IBgackTeh8zF@kj!^*7ZPqk9wCuUS--KX}yS0%@ROYoh z;{5JAP@bD#mEPVocm8dp^BDX_;c@)(jb{;?sp#@cm(O+Qsr6^BfyR1Kkv!ZL3OT+O zrKP^Zi;EAV`P{##!sBMhEq5j=glajn92%m{L6S^j5VVI4d6uv01G2Qc`7>&3ZPjnFt~cdX09fEi#L43 zPlZ)1L_}I>2nyi>rEG}>QT=g>8)#0CmcCVi#b8hGsBXx_fXDKCf(n6`plr53xPgIz zLn`;y=_$bJB?G7$CkAz*Doet75PoNj*{;b1Gpv5wX)gSg0(i~0bs24%e$*#s60bSK zJIx9YEZ(jugy2*UGc8BE_+Wd7@gx7k(h>3z6lW^Sap|$Zmwvt3Z;O$3UhBgqpx{J| zE<4_O=A12_+CVf<8U;7(NQ8Kdd3O+TooxK)&K;$ZZf)hBfyJ=vaaK@M)?V*1RqzXZ zWoA-?7zXK%oIYilQH@ng?5Q>nhp}?Kx{fvXHiuZ|l8)i)`)2=1B)!A87k8;gV{4=w z&q1b({k`9XljW_L1g!NEgf)2YN@>884XsX}%i5MKN_V`NAz-O`pR41J#~<+HUiq(* zogMZNpV&-RX6P6gct@evTQw8c3usZ~uvfPSChX_Iu7|V&ov83P4iss=Tx1~U#nvgD zk+1@|8&3U|>6~XYv09B0IrfOe{%X`oLz3e$ZD;IE*fgt=<5J#?Fhn&v`Ba(T_~?Eo#hFRSWE zrH|rOB7>?u>bza&369`ywX|1N9asloN_;IRoDna;A@}LxFV~Q)-3SvnZ&`ip393zE zTgTKkt7zb7xvbzFc^!@>&WG6*B)pysCLacnnJ@NMRyleDMSd8HDL$Lxi_7-S%OQFI zSlMj*Q0WE~+`L@2!3Hn2ujIWT`h&Mi!AyU2Ey|pVw6BFk+{p(!)@(?|sjABreqOu$ zsHRMg<%G#!odKblmDX>eg4A4s{%&+w+|LlOPz#;i>-b~e1PAKfj+Vt4{Ro79=k3zb zK9r0}bd4_A@_PKX>dG}AE)Z>mzp4oVCH-0+bn(&Ms@dPd28HLkWt6-o%A(hwDf7|Fr*fzzToqF-n-N) z*}tXk@kLMma^C4@%hnqO+99ofXHkKhD|@5VIoak$lqb&|8A+NgMsnp13ohq|T*;t? zzwMglk)O}X;1yM6WjD#__3H?&w%*8hk~l_e-G>Z{IwQ>*@@Vf_zRYJzb1@oxPjj z|JGDTiMA&hD4$7oa2Rcjt*Y;Kj(O?fZHm+Nx5E}A^o!y9h#~IAbTl4_BnH()FXeOD z+8aSRhWJjJL#h}iarXE9&r~5B?Q5S79#Pt8_3&I>cq!@;1PrAXI{f2A_~4|~y^u{L zuRdTHyFilK)XjHM;6s?Z%CTl^M=uE4$&Njv*g%QYoR)R_m2HR~l{~LyOD!ZMBqn}f z!j2lv?b5`UpP!HT_wS#*n^;CxBD0ly$%05J-w#T`LzD^o$DOfvJ!@20Mn2&1ZNiZ9 z^_3#b{%KYRT&_9?mE=M=f#BB-aqUQT?92a5=kk>wIn~$Kr_SKDmGi(oF7!-E3ziZv zkR~ENGczN#cZ9f)0nApwW?ZaL`*d={m$2&GYKwN_iAt2{GJ%!|@}rP}Fc;TamHnFO zyW<4mWTnSFxvjA^s)OgN1fpoGO;?>zVvmY*^4s;O-cM;n^b&}>S~GO9foGUzm`NN^ z5rk|Oet14CIk$8Gk!HevV8)xxGg$puqsQij;4b9v2&KA|%2)M)Hc{WeBD>`A<`f#i zT9KE&VqNd~?n(uWuE11T1|ML&mX@i)WO!Kn1=)O(Y>p~FaT$Dur-p|QnUc_MXIiz) zJ@`HQe*QW)g11&OsL&D9*3O-RccLa zqRZPAc0ril!%VcfW~SG_l82PthG!GSrTntu9{Z)?tpby z;ty|IMJ=5TaHHj(*X$fF_hi}H*oX@jM5rF;lA^FaIR9q3{o#4ivF|EYmGNfS2o&85 z5xy3>y>OyCz$U~Z#|bfgUDRb(Aa)`MO^DBM=SpJ-1%7$ z^;-oO4`j31f{#Pk!~5M4ddq}QJq9FFEZeE-W!k3MyM#}uc)(G4KP^eeY+tTA5r#71 z2qw}th>775_QA_|?XXmJ0#3{HxJ-A0CERl2GkncJr7T1`f|T}e-vYHHnpX7Khi@`e z1)yS&4-pbsy^BaIB3jq9CzoO1% zswM?5q$|f zP)YJV^?({t#GFKA&2HaR(%&X+!rbksZ0$#k7v{n|&s6TLY?t(pi?{T1^c<3~j4rRLTUhjoRnGD}-xi z*BjSP1Z5)4Ytg@f`Y@FA>>IC!4EfLr8oxsBEg-YReyW)=Hk^#1(66cpM`3c9%}ui! z`={ZW{2o;9YwkAkt=q_lzerpt584JrsCJs8DwvGPQ)8w5jwFV}GX^8gTydJQh)r?Dm;Il!xp4;bn_^Ih@l(Nr;&KHz>|GkkQ+7x1oQ1jt0DePN7-r z&_UW1Z6LnyJ~iP?iTy{d%}dtA?bcU&8w(WZzT=VPd_llcG1!6Kgr%hvLYCpLYyTZj za*_J_X3{-O+4rQ1JyLr{B?HzDIJL>ljqrSILOS-ye2*UvL$>N6b7cihZf+~+Bya(e zgmBcrv2N z^pgwY86jSYLMgR?RQF-fXjR`r{;#n|iOW{D<|9#{gbR>N6^h)`k%|$0LYTx#^So$(*iipK!q> z5JY%vV9hAwdd9&NvQ2^_xXbM8KPkQ${bN(kb;>CRLg~Xtn=Xclblr$dK!584T<`A4 zqw~hFn*zo!s+FG>^!esoXkv0w-BVW*#O!MHMHhv9N-dnJQ6o~!l+WsbG{xmFL-ssZ z=-jXws-BaosE@6Z{ccu~EhLfRd(Tw;o+wffFgthZ%l7bzEhP-mlT`i zkBM`B>j=izQnmMVfc6*SW5Pv3ICk7ikGmkW)_oFl*5yBgrn%=9ATFLmE;0xQ$ ztm*zh92H5@4;cb*gnfMN7r0Aiu4^`s`hKcxMg5NY`jZ%h#%^G+y@dUyDI*=svsF-bZjr1jNUm1hi3g7IT^oS)(T9GfkSdXYX) zv2xzV9)DUN7<83*(XE?BX zX;DN(WKo2l{}n8eG^dMCH50M&c=;y*Pdfbl`?|qx*N+_NCPjpW?K#&szp&sl(E8v{hD z+3iSPKLZ_v(}SYF$?-Am@ZHb>ErvtWc+|Z!(9kd}y1`#0%}AX>wRpgC)MqB~?uMak&!VY+x|^JO2$-I$cqCiw^9*+px zbsb#57Xi%nPY{kAqZmLrg|`Cjq^E%1=3qNhzdZqzY`7#p|8aWdj=bBaf5i#arP=|; z+Gh}0NKp+rx1A{t;Yr4NIUX`jy=Qiw0Y%(M9IZ2UOd?-1v2%7mFqk1;p@@$C!RDC0 z0yIyGghWI-ulCyx76hTt%SnI>kWn)KB2H}v!$oWC=K}Qt&FaU^`O4h0K7}V)`G1h%Qu8!wd$F2m0>tu|58T&tp=t(N6 zSPNj_?w+HL4x?p@DdK4`{W#GPI{-_-X*g4b0E!C$k3WvN-8GMkjq}HN!k$CWV-}bx zugw+1= zz=GB7*`N`itPIaI*q8ui+jg_qVu$uPtp^fIH7`et?^jpOl7RlEeyF+iefXD}nwkV8oiziCi|p{7k5qEJcP(Ws zv@!gxQN|zwNmBcd+QI5vuEx>I>BBtQuPnAAET;sDjSS#m2f7&JAtMY-O}bKJKg^_3 zXH}#7Z+~kCA^Jb~KmM@qFe`bj`5idygHGG&S~G^sHD$fn;$NCM*VoqyrDbI%+WtMy zoU4!KrcB5xfTBe$HwORB9tU|tA z44}h0(NY4sVJ$(c>JsBgi3%ou0elS3k?t!5F{1RJooR3WT!1_7ygf5*NE)-=Ak10S zuzaE{xfQWB1*C+HJk1}|G`+a5AA?bDmJ0typ3EUerppBjXuwsp_^XKtLe=Y3l4z&& zz*VR4eQ(o)Yo zr=GL_Ai5Z(@l)o)5yRo4_fWxstnJo`maq(uLxKGpuj3Mup(JHg^1BRUrAZ>kL6yXi zQ@X>9+M3{NU}tBir^OZ-ZrUpU^;-0n7>|B~x|+j^-~-fhRG7QZLme_!d+jV>l4BbagSFNND%FcD*F$ zB(Hf+6bMLCz5lkiM-sUV%=K1Cpk0Zgqju?5*W+Fif412E8qAhC8QlCPq&An!?6FPy zI?errQbep9LNWpdqg+o>f>=*~hw8#+vFZ_KT6#J~VC0mMo_cYB#!|6Hj>a3HfBFPU zL^@rqDwVd`yMY)M9B~T*_3)CxVBW5V7nmTFlf5R{ z=MtsVd0JFhftT%umQ`va>fpj7=?2P<4V+tp^*B2awgLXH*Z2~(Q+5$#8IL%u&E{NW z3C+bL((K;BfR2gA)_tC0Oh>i%#Xh46n1GV|yTxF-9-vMCM>Mg8)9hN9l`JB1o8`!Q zk-rD)#9$%Dkk~hCB6M_g{?5Cdq?*9CeLEK|?d`Q~8*eYDiA}X($Hsc&N%dxdkIvK{ zEsA#*ZuwFlA#UwD7r)%hwYV(yU29@>@%k}=7H|&dPKKm;c=T#b8;3T<(aVk>*wDwp z0Kz55GFB+b@=H>G9y>KUJA1PeUsE;q-=@yC@?vVU?shFE`~!i8Qx`;6pT??YTL%ZH zsBgKFh(~JF=+19*?HqiB@G*hI7b^g1c*>yP^MlKP5PqEh8lK;S&)wPN{K>|E!IpE& zpa+yT>1|y7Te4pB%+2*r3l6zt^4s(f$mMxBIft4G>L#mFEefAC1#E9=xuqkObwF^X z%?oivBcI(iz7YFpChP7U^4oa^^1Z52XZ1k)24Bh@1Oj*?(gYR#xuu|>fY}aPUGnVv z)W`@QYV#yx)m4lq*6d0`lWZ1Cwm8MwDu^#c?)lMqS6A0{VPWAw0dzs&F))Wf3G}m_ zeI=rm-7%CaC9gYIsO8*{)s55svpQbk_<%iq4F20)0X{Y8@M`GG$Jez4m!VB_&gd_5 zh}9?<(99(;)nzUgBhfd_NNs-AprT<2BInQ^)p1$xMotSVh)bxKdhC*wm- z`4w8thsk|XW+XwJRWvQkJhTjbR+H94dAI)e1i)a!QNWJrcMAL@VKC0$8PD6hmX6$j zkV30_pqVPJZaxh1114d{K)lJi$4D%B*FYVq?E(r?G$!(~~)INRT}bUx(s z*uEi;y_vHq0AN`~qNo6Ng}v%2rC~`|6@@#bR{)Q9#rg2Tp{Gg5b2%>jPxcR=)2$J2 z?#|oefN>V*YoJ@$jU@{)jnq4*&oJJ6R_L)KOa(-~OqtFv$<4{^1z7WWDcjqo#e;|Q z|D?l%9;$F)1%lvLcaePP&PxG04BAh%7sYyk#od0Q+>aJJvvD}ABdo!MU}EA$$uIY} z8S7GC-bn#AfS8mo@40swGMNENc&q+f(Y=KbdC>SMQqaHcq2&5nQkFuB6s%!7pFj%+!!wY4$a zA18IHyc`gq1wysaYOL^Ep;c)4gwt2r8H;?FtnTsj3jlhx>D(Ol_S%yPG$;V!?S6ZC zbdc_`;Mwh*CGrxW)8w{y*JnWc)EmFRbh5vu`z5P|_#~vqw#e^>`*2xVxs;KDFCwY5 zlz|8g_9<&yE;tvaQ z0T}SUv82T6Jus(4^6oi6oVdc|R(Ls1nQUWLA{ zLEqkwp6|`J0|_&MG(oT)xOC#N_&JGQO|EZyf2zhrr=(O&qBlDh4+}$juE8d$X>Rj1 zp6FxW>#?kGV2y|3omR1w>>Mk7BOv?iPr|>nJ38>b>f1J%ZM1`R8y!9|oP7G!a>xis zuXi0C9X4>pGWMTL5@*(#R<|-6M@Pr@T((fco@y{8JeL-jjU)E(@M!ve)BO0E+4(BN zL-N7)wjMbi7JUS26*Y$W)fl3{Ng)me2GzE5UWalc0QSy$UM}}Pp6>e}%@_7r?LT1t zh9ViLgZJEk(MuLrd0kgiV^=dV6K6Bv4aCpOC&b0a&&4mG#VabtD=5at$HB`d#>?y9 z=b`cc++gQmYGv;E|G(idVQ3e)LB~r=*Y%yT2cx62gSnNh8KbMGqZy->qpJxpO`5)X z490WPW@G!Kj_y}le+R;3BH%V5c*^utIi3vjDWja9V2>##Q=Jwgdg^cAul`@Ozi`oh eZ?fNVgZ@!IaXo$|lmILNQj%Abt9)e?@P7cdf!VSE diff --git a/icons/mstile-310x150.png b/icons/mstile-310x150.png deleted file mode 100644 index 928c1298914bb611a9cabf0eed5a0a559434c32d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11800 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 Q31k5%DZG|1lQj$aA9fMzxc~qF diff --git a/icons/safari-pinned-tab.svg b/icons/safari-pinned-tab.svg deleted file mode 100644 index fe86e17..0000000 --- a/icons/safari-pinned-tab.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - -Created by potrace 1.11, written by Peter Selinger 2001-2013 - - - - - diff --git a/img/1-decks.png b/img/1-decks.png deleted file mode 100644 index 2fb62d42d4a85fd15ebf5101bea9dec5fae4e7d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17133 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 Kt_b$V?|%XA*AQ6% diff --git a/img/3-deck_overview.png b/img/3-deck_overview.png deleted file mode 100644 index 6e2098c2fbeee579770da9e3111f8d70c6ab8c5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11973 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 z 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 D3k}QC diff --git a/img/5-adding.png b/img/5-adding.png deleted file mode 100644 index 284e75b4356ec35e41bba7edc63bf7b007935bcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11427 zcmb`NbyQs8mgPwZP(Xq^K?-+Ea0*LsclRJk;qC+|oCJpuG`L%EcXxMp4en$vZ~D#Z z?vd4RX8vH+tp(JT?>lGz_C6J&C@=8_g$M->4(^SVjdG8d5(frBfLKz%Sm0Nx|pN@_X4!J&0L|Gen2$@>Hc$HXJ`QAE{M z|0o5yQO@+bC&7)zp?d}=$}N6PZu$KKF`cMXB1!-vN9>v!A&QNwScasOXwJ+Jstg4*=u;N#k~0P&}&*c%Ki_c1PH7i zMKQILORp=+M45dr4JrqrBw(QavPCY(_}30*g4PpN`c=e~WsY?77vu9ft5PF7DJ*Lh5W)oAL>wxin^iIHH0o!OoHal^o7JVs2YIsMgT4)l<>@t##b7y;Dt? z4*7?}CIj7r$0%+ul&YI2VUIR~?;&KkO?LIM+$AH%gQBwcQ8!U-4|q#5xltN63Y44< zh^z4dtrx*E_BV~06BkVhi_r#zW3o!D zcMWG*(ahK8kxS^Nv6 z7)KH$DNml9mBfG0gXiuOC~wWvrs&r#EkexKnHM*iv`6bLzDSt}E-gMLIQbE;>4HbSOix79QyO_?!8Ad)q1aKT4vnZ2hA z;o88#dKV=5@YN&yq&ca)l5*%;&_bp?bUHJ0kBTiodQiid$u*ppXLS1nqx7y#y=!%ovQ6*AJn6A7@l8}v6fu2pH7rBo~?#D zj6*jN63fo_ugbd1mVY!u?6rtW1!y7Mx{=e+;e)#p>QWS!)#nb`-eVgyq62>ul`Nin1cM^kq18)+MD%OuGoio#(~-;9BVD93kt!k}KV$znF! z_VaH{IFeTKq^}Blbi6L^PMdi>wVvMZI49lfKjr=0*spIVR4G9Ho}XR5o~~)8z4)W| zQ*(v_G-qOX+@+Sh-s9ot9ti$cFNT=ifW4f}@En2AOc&xw#xKure_i2FE*~$f97!V8g31x<{lI(7OG z!W);NOf2q7wY@QNmZ8Y!77Z&!9eKw#Q5v|af(w_Wtu8n`C6{d#ZMcc%ZX&oQa_3nJ zV4vFKa-r(FofiWSyDmE=a;1;>O+3=tqEpsJxYx>SR~=bIdz16cC+8nXTU;-V_Z1)Z)A8K*7#pI|)~wnR(G;gjqdprY&C_L3v=IdkSi)pL^x zjlN^L6*VBWPI`|ujKtQi-q%WOdTizXE~%9{)4rSJX{k2r$$bqt8`7e}@MrHv1BF{5 zn#IR;E#=;76^+g02rlr2&JfHFAvo#Pa4`)PugP6cR#_$K&EqtI0`jEhnTF)Gy_O#g z0~L8rjRr;~h{FQL6J5hH2LH(0-19@odr*Gn!dZzi&& zViuXB;~6zd@_H*w2WSFN@#8moB4kqdoHl0+e4J`PXu(1b+kM2$t1A!h2k=Pdc3=g27f@T+ltp&gp_K}m=47EZ4V_?k@z9dDx}7)cZD4Yd~Y!u zBD&qnO{0?g`97Lb0?mq+iXM4ZEtTCQ@crlUkKTVDUFelEVAV}G>tWG?Uhaefu4R^U z6=LoeyWrBMtDh*wvt>rg4bE1H+%~DrR|hi+9A<-b240tO;Y6I$@@az13IeCF%Fh$x z!>JHPl^ofq9#Rh`3nSfTPc7wKd1fSZ(%43~bLmf?vIL%PHpZJgT=F$aQ{O|UW&7iq z8M{JpCme{lt&=BXdKt=km^ZDI;Q(m%f#2pDADWHSH8EL9o0j@1aV{JD5QO7oMUfy(s|p{8UG!# z#9_S?c?Vc3r|^b-f;Aok@7ru^D2shh?PUF%>ZNL{B$J|elkmoB6Jp9w5VK~_+hj8D zn>L93DnVF554%CAN{KEntxPoB4=v{N8xzo%!(Y8L%p!PL`XDnKD)L6h#(9NnW>u*m4f%ejm6IpfdP8oCcxk zw#fxCes@D}G)NQl`ZSgyMubo4Y|!Xh-f+cWdj$D~jrBU!6Foreh2?y+mxooMUPJXn6;z`qSnc}5>xa98(gW`|#9WgO5YHRiSOWaP z6#kif)%<9OzmL}kIGC7gC19#O(Cv%xqlFroL=MyU-j__r!1KM9fdba(a9LMG26*OgUsI+otXkkpE~SkZ+KL)b#eLT_OH<*!{!m$s+2^&vnQI#Qp_1kQya-V!2 z=uk$*xu}ZFEkNb)p)2N-svTxxV`BaaC{s$n?;+Oo?9Kd4G>^ax>gFSPi)Ii95q1sBDxW?!2)AtZeCw|IL=0iU@`E2B;2?afChizud z+SrX}Zg0T-zaq(u{XN|~LS>MjEZqCmDoBk_EJxv)#;yP&*MP67f&$h5<2! z+EoPvHOgpjdB_3rQECx%+MoOq08uP&2DJX{;d}&Ibz|FA+wDJkGf~UHVb}_X`xbGE zP4g9FvXGBAAP8%_Dv(*78!tjU zu6QspG3yP0-q?<{LFA%i5&|gS{{4+#ZG&>QG?6*M!9kIJllFp_iEd{r(ED6ub2leT z^cME!s|qI?-5m6g0$&rZ6R>``?s36T3BNz>A>;1~!*|J%OWLl+!18WCgF{4nF+kX4 z?mG~EU*s!b>1#rjB@?UefAe2O(-Ke9mdlM=%U;)dx3@cKRfcY|=~Q0;^vSkaX;#it z1lMrhVny02r0`|q?s(-ZWd=Unul#jRSRc7MTF3@4v4~ox9c7mK!I(J{`yd1F-Flu(=il`NqJEPG=w`Mlo!a?H>VrGLg3B;gtK7mc^FII zK~Y_xR@mPjfci{U)~MiL@G|$nrjx!tUdjgQ;|##nK0s-g zz4!0q%HO`i(&qh=H|S)Ze|%pPy_ekaxZI}(R(9t021_+OO!{#7)z}lDhj(48RNWC| zr3;<_A%97E?p3$IX)3Vcg zo`1XHz3ZGU9cNELL6HoA20x(Yj$BsrSv_3wx;3;^$>DE#$Jwnb8a8*GJ~O45G)lB! zmz+8sO!ET8>zE^(xPFYw2Pl(6C?4~ERA+wXRlqfftC#9C%O!EC)!^e1o+2z7DmJ-00lazT4HS5s(BB7@1!O7E+13DU z%fne%eM|a>AT$n-E6dN5c~S4J7jFWQkN&`|JwncUDeD#TetZ`$W^{xbnS@`aoi9UM z=tR|ME%#dnK|VSfN~O8))4TN93Em&R+iCgxSlY1318ftg!34VwXF$d(ep}9Qq~vx{ zBm3HgqyVtMD_%CdH<3F<`5v5f4hYzN3YX>Vs^v5Fn*)=4oCziMYm;$tMyZ5O9t^ zTs}{pj}r|@AN^sv&s$rkB&X{m+O};L-0hzZ^wO=2%br+zm4{F;7hvXo)g?DMTqC5& z0bZSYU;-}8+Kq55I~4R+E@0Z`+xny;iwBr8Yfg8>TC2bj0V z`X~&P0w%akc+EQd>`)S3SR+&Hn25O0rhQ;~#&4$s^(yDys~}y?o5m4=^Y9|=s{W;Q zKAsi81AkaSUx61u*PPmg9Xx`78d{@R+HbmE_Fzt-`UvnIgWJ>Xj_K)o*L+~@70{EE zQ8#?4MxT*vslf%xaq;)@#OIi3>?cdDg;AGL{@UH~+;52)pfGKS$jJDeWm#=~khl1p z4_$}mDYvNin}y5XnGHrhJFTC2UcLdt02?*n#P!E97WNv7KvuWo=~cS*>i=QkQgEd6 zT9>+9{%j}N)I&?LORg!YP$c!R=_FSdD@IFKHI z#DM<2r2ZGS0X#g=?E1^j5=oc6x|Yj>84ai(!5gXZZ?^BDl+wJettl6Dis`LYN@kkS z*Z|>-%fxr)Uw+DJ&fLWM2(#w~k-AIDB(ia+1oJI=E&SMZ*4$X z3bt_9nklc)5W_u9J`vQo|KT0AbDiK`@!YV+6~wxK>|F_>QV2$q`9{E<(>@*i*D&Pe z9>yOfw$^|j?_ymOBRA0)2{DYpA`Shp$gH4$24+;N1o)KIut?YopGxGwuK@>;2L%wa z5RhRx@4WQS?1yQBO#X`j8`W4^GN0F7Wjt<(jW@lh-;285$QI&|>qqLTYvF=S0Fb{} z9|O5WU2$K+S6J9+T%YDN*%t0unAp^Ddv?|YG(C;1iS z6^u$Fau3_oVA=cLDiPvQ?YKKC!ttp${kAYup*Qhrzp%954*~T(K9T*`0Ake=m@T`J zpsHV}osre)8g!~4+aMfCkj|cn(kR(RS~ZsP^K?;SHD#iXBbW7JUR_AkRAi*BUo=xnzkdo}1%N&e?TX~7^Z^yhMd&%@ac}Ac0Ai_e|o#=Y}zl8rl*J`wl+gP71 zH<3SHtV=-`dQcpQd~Y>B$=(!GvQT4_W+K}X|28B%+_68Fe&dI}?7(M0=7!j6+CICQp4z_S=#A$XO{V*;koV#V4C)C)nDT9Y z2r2X`Ikg@EXcvCUyxnIF%o;MM>2D6!WrW#FZVk1&;BI5fdHcnz=PRYKGdqTaSp%gJ zck`c3@zkZ_5!{|cgVRAyk1)01r$>pXq6B?+DHG%eH=fZ~`>H zFM`2>m9)`mOW}6D9S1~SpE+N|hJGwit!-~MwB2t*BAYxS-&V>LzkQ@YMh<{SLbDiu z0w|#{?6nIaZ-WWSfbAR6RRSe62`h8-UAQ>G2j5puJS{gEtZNiBt$nQp8Ix4TTAsXg z2!2_+`d;(PO&-uAO;36{vw;2sg6N(+4tL?$-Oj6`gb!FRb<=9AE6j!p5LS(e)Wr4H z1-Q8TERy7h`^A{VB|&rC zJ^6NBm?74jwYyd$AI}Ln9A7?%Nk%=&J&zhZ?SI- z1gAabNHVc!+(ji9Us3DU_Sj_?1NnFkP3Q-G1|MJmi-E;$M3O9e)sqVG_|n~@ny*|} zJoArFVryqu^nSeiERy+y;k4`dFA0pWkE5w&-ZS!lDK-3q688oUOElA6#PVQ7Jaybn zRMHT57J1rVHz(+nf?>OPo`~eL06sycFU=_x_62|&UXM$40`duMzgJc2#xJMPBf+Gm zWDiqBmwJB>p*Eiv))hXm3Q6`332OpPOL8691^{A1)S;+A&Q@}5X;N@V@_Z+QqwD{E z?7(y<790RT&lTjZ&H)x_d)^l5)8OEXS!SC!_$?AfIcrX^`@A}DlPUhcj2r&rwBlhq zS#$!3`4_20C5>Y^Or@owC;}QBDY-${0Q%eC{4wIiC6qeFihdRWU!Qku6Co5ZDiz$-VG7Xgrxv0VCrtZ1jCk;dki=(vD3)3L~n4jGS+Jhshs^VNs*Gth50akQ6iv zBaSW%htH9U+5V}>9)Wxgc-Pnxz53qs6u!QS(iZ1yj1-%h>f(#Tu@8W8WEJxK+f+T0 z%>JPUFo(a3bQ;tbzLP*0nA1F!caXs|QjrAsKFXRc-c7GbxMY_J`BVeZ$yjm~(&7R2 z9q>45%C+*kzl;IWse^Zk{4R%)0bzK3k|tI6*C(Y5tN+CmM6W$*7qes77!bL;cWw|YclS;{B)6)>3Wt_^opgB)4uB7Obu&V zA`KND*2h}@YMU9QEfib^$!g2F_v!%{GO={vm15oem)&Q_5D!O>&PoTfk$8ajB!TiZ zz1*ML*M@&Bk13iFP2OItnIC<~W(N)0NsW1;i64rh3`*wl*0pXp;>y?03=}vYe8&fJ zYVB-X{a#@@_3arovs8M%k7tOXlE`hW;((u!_nZ}VlOZ1JCRzp<9l*duUvFE)AF=O| zX1iE7JG6w~5~rN;MWB141VGpJL`nVpt)k z%wXY&9)+kR#mgfR|79|(2h1%&mM7_;AgbYH-b@8{OwnjW0lgpeDl}f9qiJ6=LHNRr zH`s8bvE(qSH?GSskQt0C>bXJqH=lvPhoc;lzNrE9)Xg^%|K8_C5+LOg++jsK8X7X> zwb3u4@j2dSCmUB3;`7v)lkm#|S&AqfVu7I@E)}E% zL){3Y&E2KJj;`#??jk;96O)lVBj;kaS55q1eVawfxgFxT8~LopdeYj_6LlEtGQI6$ zUg^(u_4{Z6I#vSAWg4LCJpp>wtz_VY?=(#pctT)BbrpD`c|e-g>SInjo7ds7EoxwZ*79 zdIiJ}`Mp32kWJ73US{+mk=G=UNv~d2`DgX?h(M;=qoVt7f6U=Z*5=XcbIDzY z(?88DlP6ZoMTrk1Z(|~1pVLwT?XEVR@Zeg`f zPPOK*=luJn?gW?sK9EAMT$5ALgQRN9fKky?ZwzfjrPYFZJd+j$khqNd@UFIfRxCFb zqgQXNrRliaN-)S;Yr2*OoEi0pz}NL?oBb&|@~J%Fcj024-at{;UMV2^v`h6mfT`+$ zZ`_;{*ohs^ZLsK>0@L3LyAAQGuMm%m$d@$RMZg$STiQn#=(1tD5=cJKpFE$VH@WYD z7*Fl)@`(80cM`H23yg|e6zf4OLz#AqqQ#smws;8jTMT&nzoGks%OT&EMa=M*# z_H=(DlQ5i;Eq5@jeO;|ytgT$GOg(3`K8ZF0p?w6J;9Fk%USy%`k6=8@2%g`-^mt}n zTD5qk(e3y0^xkB7W~IfLD7;f}$ySWQK36lGa&GW=}m!<19 zV(4m)_zGE%81eTbUzP7xU+I1g2Sj#KDKU&^e)4NUg<$;p>bN(4yF}J=iOU=eRpoyE z{pQP3`Tyg1eiLzR|4}BW${!@fpz2{3dZgt?ry##}t1rL_+wnMEWCc@wZf%(W;`+B6 z9m3o=kL@NAHwmxx0cC?Hb?7vyc_MXr1(bezpTavZRa7vek-xzjmS{BhTQ!>hB-T`2 z@x?m4JYvD7|55&*1LF3!d<-pMOv$8QDfyGrh6R{CI_Q-8VWp%gq!gISd7=hIZ6c%e zd?VuJSlzieeQUSFqL*dZ=4UOl9>oM(IEvG#R1Id$yY^>5EMBM_^O1!4M+iM>3MLB7 z>D9{*=lYmC7(0XXZkQiTA_Sf*GxB#lnI6&$CBYH>KpiYBEb=E; zyV^0qc$@Ux%ZYnMhwgdSzCE0{!E$T<-`GGQA-dKic>-?dUy%0r zr!=apfSbJ|LObSUIcOE}FTuUqpUsca#;RNi$6?ji6>8zWJYHJRqvShjKwCgWDImE! zUMSLf*K#x@=ZeVyQtD4&WexfkC(%df%C!vRC|pbb(DR*-nl`$)OYWq;XU#rFM1O*j z4C1c(*Cv_OK(IIj^&0(%oAM@;OR$AIjs=KT{`uJq3OC0(dA3GY3LDj#&e%N8hd=5M znqyl0tjm3c646~Z-t?sjwY=s^u?KRi2JuQnoN!@sYkSM|36z`->DSS5wwTxy%U*k3 z_*=k?RCUam^L%X+wTAABQoPbGjsuJg-=9NKeZ@_3trE`6qNr`wyI=ziIt3Ez6`VO8 z;NRDd4I@$1?*4EaWsQf7pc7)#={5lq+9QnPh7-XW&i5Rq{aK|?Eb-6daA*!36wl29 z$&6+FMt1hv?3MmRl1)?g%&5*br|K$^2TPN=UDMX)Diu_oY##ndKC4Nz#YRd>hkO(x-y17J=b@~ae zpMC|AMso^1kOMXBr1LkGs&GLBqv*scW+&B49k5Q+{z0#!fXu3)_;h20QeqRxRd76K zrDAA4hZCcbD^4yw0*M`vI@9d?!B6gW6$kh{Y>=Hj)!M16{ylH{_U<-Dp&jquqo#{| zRAJB#V*Dk774W190HsL^VxN2`g=j+qHTd`0KBI`%k>>7f&UyPEm%k58c3_f72+0%n1RR?pu{3Rg5zfxMOv#sf@f?RxdkbGwz8^mc%RJ zC^B#aXUoNiODC`}<1(l_>Z}Kuw`FcD6_C%APpMs{ruu12ts49t=W-l&g<-~DL$ObQ zQLzfqdkgaCFtYk+UXNJyf|^Eymn*toZTojW_^ZC_pvOs_Ou2s$BzmE#b$69?9~e~>L zrzNtoQA&w$#TkB#KeX@y=3j$^u!vC-9<17$E&=d`&Q_W1$RF{fdEf1|boq1tqdDH= h{CC6P6#O9M@R;J%KIgm)e6bi#N=*J^iKwC9e*;UF|B3(r diff --git a/img/6-browser.png b/img/6-browser.png deleted file mode 100644 index a2a050bfd0fdc4b79633f628ddf3674c1d746f28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23275 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 W6)T62Q*ep(C2b7@^;bx{$o~U%IdJ#@ diff --git a/img/AlphaTestJoinGroup.png b/img/AlphaTestJoinGroup.png deleted file mode 100644 index 94e669ccdbe99744451d2c65f567d4c238c93e07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58609 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 diff --git a/img/AnkiDesktop.png b/img/AnkiDesktop.png deleted file mode 100644 index de0b1b87ea5e2ee6d19547f1257ec8a6eb1e86ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14763 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 diff --git a/img/DebugInfo-ru.png b/img/DebugInfo-ru.png deleted file mode 100644 index 25c909ad4b413acf528c434f21923685c6c2dd7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104337 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�k2$j6 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�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%0AB?Io6$lVw5q(d% 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 W8Xiqq13c=Hfx*+&&t;ucLK6V=UKPjy diff --git a/img/DebugInfo.png b/img/DebugInfo.png deleted file mode 100644 index 16f492b4f87dc10c69635588ee74194defbcce77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21692 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�BKDEH?a-s}QA=*I|icCx%8;M(b|&Px6rEIrR1^o4E^_BISt4S01a zM1pNCOq?VAQkdb}E`m$DS3kae0o1MJER4v4L}XdCG#9Or*D+Jnh6~M&-IPwtTCh!* zZ#R^B=g)DF-DXYIrekZ#40)(l*pmX%RW1B=3I-W7&%IM#(Zc8fxftTBr|&h_$7QHA z32Lno4)!eVl*5j8D_xp@tZ^gH>t3>4AdU!tA#WH@;?Pd)tK$p7U%wcqFq+hdEE(57 z&?qV=GpdLG>esMqE(i2zUxaj>VCVSRHiE5Mi=!cisrjMnt_?(gtz>6oolU{Q3blIF zZTF|nwQ7zj#S5pAg_NlU)|ocyDoMdfy1TU9--|bAKbGq)v7)47^?3-jJ~Z-qgghwe zeZpbwus`%{Gsr?edP@y4e}zNJ5fn~*rudV8 zKLSwl19Pb*`3)ofN+Kf!BV_!s^6<>{NHojWdJfP^?i>ua|Jr9`zgcH?J%(bZtMz5# z3$P|{38*1I5B~)eMi!0P(MVyP;K{|Lka*Mk)PGOMjy+3+h!#G*Xg~7JW7;W-9zM*M z%`R>DNhj#XH_L-6s{FI}o!3@R;6};5e_fi9STl{Z3{RpGtX=&Ix3*0PSqo@rA zrs_l>-!dKY`IV(F0$Spc4Qx(udTz){`TLVb>*$}>IQG`z>O8?01xXE>5{!|(d7ahD zYBo7Aj25Tjcb-G;Jq9b}9HOnSf|gp|Q<2q?(hw4#JGQ3Po5X%Tk#35(TmyKD#GghL zyM=9c(S_Zzo2Ac44~Q;THqK8PljL>(W1Pf9-0pF)W;8g;GmBQ-UJpt9idfxq>z#>b z%>p6e$ovCDxJsHQou{KhyJ=%)Nv@N_$`{U{f? z0M-|6AQoM_|8qyM>NS4kPWgEFe&bX99n5+NwWRQ7qYe?2F8g=`VqEl!P zZe;Z~sw4rAKd(dq1`RNR+^s}V0ju2Dex2u$(c!4TFve<<$&K_bJ$k65BCpb_{yv`@ zoc@bABmzYcGm0K6sPsXSKoT$n5oV4{Ut71m&pSKl~LUIHMKqLG+4$O*UZGm4NZ;$LmKQVR5=^G`(e1-A4nbR)`>f70Sj? zTH1lIONu<=wp28+X01^NnBJAr49F017bxj~^zX;|3M@2#{&AiYAxIN@e^FA_$)Wze z%=fMz`@WoZqyB33M!329yH+pe2sC$#LK3=qjH35hM%+u;6|Pr@-+?Lb!`zjY)Z_0) z8+BmZY!xE8X>Qmg25wT@gSjT~XBVV=#dMC~2{In&OGJq9JX`-}+^Dz^I`cpI8`ya& zHOgto$7Ja@n|~tlJPqpHSESBb_Sy>4iUnQ|C#)Odek6eD3c{(|N%VtD4z#Ltx~~Cey*J-d z8z6dKYO>yC(j5Xs$$w(F*>EOr<-h*n+keJFErkA0A_Znk1tq1DP)&}fu43j#6!1dn zSlfw`*x^krSg|e8=4V`?>u6EDctcpW;8hPKqj5zX~aNB~M z<$cwdI$W#gsS9~uQ*WJa_2P-`&o*~A8>MSU5M+N%8^c@fR`k(+X**|++B6|?NHlxe@Y4uoj)VuUwAFBW@akE?{L_k&#F6`$ z4ydxkD<37C$d@oG-+fNwel9!ON@=X+Qr-8zfV*$dDgZ9;0}~uakd3sJ{J`}8M8n9&pY%O;Qas+s z5p^zx-x_spp(A~GDz_7f=Q7Nfy^SLfxFR_U&rf@Un-4?m54S1mT{-yjj_Trv!^I)o zGUB;&EQ^>tNzy3#1g8vfh`oe^4&L>MbP_PpNpR z38(*!+ot6GofE9O{biPrV8lKJ_6^vj+JW`iW{BUK#3AaWT;el>_*C#=QkEWIrVuds zhA{T$hrPuVbmf*uoqZPBz#gjgV_I&f{pDU>bvI&fuobmZsQHt+0JsCxRmh?dgTLTj z_t`(e+iy>*xBePzq{G5&?Ez#ssUY;tws_@rF0xKA-`dCyB&(f-IiFXT4X&V(E-R;i zyF1YKDb!#aD~24m(VfJ?Rb~s86M7wV|B@W-BZQnlFzo}v2zr#FqlPYe=Bnu~M@GTg z_mVSbbH4iPlUplQC30aej?mP$e{Isi zr@AyK4!sD7R&zw$R7@K7#J&@D~uc(x>C! zz{UvB&%V=b{`duQuu_zS+_P;gTjuTwW>ML6uDT+5)i=+S-3KZOso=I-x^zN?Ue845_l9aQkat+?M8r4EH zboXVmK`ln6dYNfpRyqRR5|d^{gYk#Bl)u;H>LPc3f<)O-Pp!14$sE#^)I1Tf8&>-QVQ36cmKB z99$0b#F)L>6bWxPi%J=k^6DQmY8F<9XA)#)Ft;0X=3DvJOxAyXI9n9Li>FX9d{&|~ z82Lcz4O5QqYgt}+JWFCkznCglmw6lscH9Lvq4%C96STFUv7B#te_1egzWx)PeYcP% zt10#4?_e!QEiLrdL1+`h!^0mwppcn?YLYvmIJ{M3IRyuksRcXgdJM=^yW8nc!iuL9 zq8BT2{tT+zZmG+1nBS1kUBj5Dys~m0kB!<;Dy#oQTuuJv zN(yawdSp5T@vPG^p04&GQQsm@aKKCc(WW*n!~1MwoPk7|LP^Q*N>qZA%UlwEl;OSp z8N4Sa%8L}1u~Rb9V)X`9SrZRK%d!^0D_oBJ@m7_1mCtT6y= zRM)nDz6BF8X#}BXk`NX8nh`gESxF6=LX>+9`$w)h*}D^*>JqNdN6hU{p=5?assa>? z7+X0Q86%0Uk6~F!NlE_XG0d>%to8X>B$^xwPi)^?C7de6wTvoF$Od||+c*~G;o?xG zw_W=Rcmb+5`DnTliwMrRTqDA>-x_nDV6B6IZi~O~<1V{+CereO`>c#;d+lf>NJ_x# zWDQmJsLPI32W29_ntyjhR++#(I$Q6;xhJ{*tl#9_e899dhh?u1%lq9B|3D}-Q1q_4 zu`nXfVb@RyH=bfuD%k3cH(%W$uD#E?Kk!G?XV3}yuJ__lmWNKRfyY6N3N z&m`cGs&X{*Mw%09nXSY)15{8SOuG~VXw#l1glK`dRH6m~XWJw`s$)ggx!%&0){qJ| z{JJ@~Q|ehj-+5F9Wo$nWrEEuA_QR^H`^vIHTz0m49xJNsUXXE;CP`x|P-hUI*_C6--L2w_)5hR z00-_?FBGnbQdL7dw~C`OK@gP{H!!4$lHmYG)a`Uopc z!NIS1vg;RoRdSF{N9cXWd1`J0Qs#3sS1H`6aN;aw**EYqqZk~!UPc&q{EGomf2NZa zIAVV^DQl^c72wxf%};g;*Npo_M}J>VbZ?D1`rPv4i1^+N&|y_)_##5g?Z266sad?W zK7JScT;4{gc>qI!aF#(?g{11GG=5=%n)BUoTWyA^UrRqTTq{B{RpB>zcKr8{`$(h9 za~Do|Hi$kY3?VZNDLY?CwbD!?%h5~}HZ|IC6FWR&#JQ;>-m?decz|<536eFR&!Pys8uId!t3d1XCWq{qwsoO|{nq$3bDcT+BYoL$8E-CX>G2Vr`P;jh-w>%n>+e4`al_b6-OyV>`sd%_w8Ha=sDeY zniPYe3wvCZWO4&Cen$gbhBkHV$fXCf%JS*qeOp|04yW!!_8 zJR*+l@A~1jgb1SO&7l^S8J!QN*d}R1w5Wu;4@-;PfQ@RIQpdGV4-LIhLHH8SGHQ=1 zG`8M9Ae$|K(-EyzBK&jdFJ~aok_wN zRys-aigIm)VYDRZa25jH;b7ioE-Q)r^^By<5P_9vHuHmHbT02G`oAOc*x}nh8%DF@ zS$5@TP;zr#^7voJ4)-ApbaYLQize5?np!*Y5H+u;wnnp=N|sfi#a==$q3*U{yEp6#rO;coGq0Riyx(isgSCl ziM}<%R?s0#BuIHXT>ZJ8>7O#PoL-4=1``iGqn*xel3PI*aar%j1o^aFP0Hx(``yzn zI55B)vwVt)i2+^%EzlhS9pvP&=#UaLRa$ZKS})m5yZ_a6;57lqk4EySy!*SHR(gP! z^tkkhVb1`WAd{rVxa$F&XIY&FheYs6ib3xW5I`={vd6rG6>VlPd2QP+6B@^sx==$s zje;l;EuJz=f%_SOb33!De_Pen{Mqcm*_)%K4&WDJGR;s^R|lO!ZBIIdfXfH@4_=vi z0Szyi$%Lt?yNA`$eSiV?r2WSi=e1Yp69OK9wshZ{E*^&_f!02Q00br(Q9uujO1raP zAyQ{5ajP$n0Ux*M)Qi(N_1UzyuNHAb1av(+H{g^K`$r}M=u|@)L)#R|3_%8$B__Y^ z!k53?W5ViJWNm<-e3pZ;^Sh3A1ig>K`=8&i>K-rtu38;Cd0NfaO6{^aXSYXAN_$V$nS8rfq_E* zeLg0z0J$Mn<2Vfr48)6Eq~BQxd7oHhhB=yjm>3dwb$J7~GEgQ<^&O{w>H<_>5^8ud z@>Hc+0~fq}2{^))a|G$EwQ3A>1L{YKpy%6UO+}4s!0zL|RdxLB!)6#yRNviM!JItB z-kaD_f@K5aKZbUHq|cEWn(BA;Zq%aW;sE3BjY!nGjWP}0MxQ4D_;%zALv#Z$5v z9DxGPp$&Q;LoN%K8S}Mpboxf4ccsm?Q&EnUhV9KfD1=<`rwlC*z`1qiql?VX1glQb zoZ)gI#54!bfX*ZXjG(-e)LyP? zv`!Fy$9Qlgh1|>?UfrT1unm#u!uI;VDmn9TD8Ijthe`;MrA(47Wf^3bEn^>&y_g0O zJjeIBp6mDD^IXp#_uSVtf8BG=nfsj2 z`~7-<91LR%lu(j`H(4I;cO3E|V43&oQ1q-kcvP@Pk%9fx0*x{2x!WhKf)`UMIfMt) zT+aFKtxYq>bte5g&OuGTn51-ri?~S!@2mzSM0(DK9HVozPs zaoa!ps|d+VBJyTINb;EldXwfJJB+G`t+W_eH3dymr&-xIQb!;vV4iIQqAPsDMGTT3 zjKrxIjUx1-z1V;2h%V7`;d1XGgIm>%6ZL;k#wZ-EHS1E7_$Cnu z5_iOg`3#ebeFoESzS_xjndH)V%r;}-6YayH9;kR%K`ie@URv@Nv|pwHDsiJm46XtF z2_)&DCC0q>!I15=+jdX4?b2mk^Uua5DeHObSlSbnO8lz${hEZiu}*GuI{C)g=>Wfh zCBng~`8Jm7mal~Asj8>sWKJ<;oVu{}KF7g%wW&=l^EstA(_y9*bTfHHb`yYphcnH; zSy5%J_>c{B#KQ?T5Xj-rxFW(Ms%%J+a_3rJXPzc9Vz2>LU#Ahnfquq!~{b;(ZG8Rx!vB7)FA^# zT&2Go2t6i(dh9)Bk0-H~%8!)HHwVDZsEpAW7cBVc5!=m5LRTj7_}R|?43#dxOEVzk2VS%DMaQ&)%Iee zA?bDQpQQA+P4cu>zTTvp;VKR~0s5(JKR%zW7Vhz*{Tzh{_rbdezV2+1ytvP*=j4yS zE6Oc83@HqnRcTdh$B2*c?X!GSzE6>zm6g>3Gz$g)iRoQCZEF$RiDbvu;q>R|sS$k!n&O!ty&1K-<#Rq_?SIeK@HBE} z9eA{_kG|!K_EQn){v;F+xhu>-DsuMQehu)h(H|gF3ZEL#+O;WgA`DXt(?11 zVTu_8veB(CZnkW&L9yrpMgA3Ugl>smc!r z1P8;GsiyR?x0HJU!sL3ne!5f!nz?!I%|%AZbx^9!7Z#cGvJ1*d;sRTPkBiMPS_f8j zYL$x8`-4d?yp21HDgq5;=sy-MyxSDcA~l{&b}{m$L3KM}lh1&kyBg19Dx+}@H%e!$ zCO7z8t*&1xSXvY}1P@}M{o~*}Jr4sm`(l&bL}KsH3Lj9%JlALX!3Ct%8&Z7KttEqR z_5NM~&&6+=d&d#Q#cv9c7vQBr*YsvpX+VwLjvB5On+13|^_8c!Xd->NZOHo6=M_YL zEveY_T?2dA3h27Qh;mF1%@Is95b%VItwbS$>+rD1hZ9#=i9>%P54RR)g(_)qwTE54 zG{pMXI|G5ty{Fg#zA_yc>_W(TH~u#=P9yOg1i<72A|oNs&eOL4ZtKrmX4!Vzw}mbc zhuXq)#MA+Icl_%Y!Q*dxQIyzQlQ}3S3D7;(6?}xvl)vTicc>ju5=(`YV`J>~l+K>v zELC`ML3B6rmyj-}r>LnOa)83bN!8Q)bjr?>5U`hQcZjC!(w9-oUMWz0%WZmE4DG)_n2STh=KwI4QTh1TCwUoNTdAiZs%bvox$NqxLX+ zfm|gbHuY@G>B+q8tabS)KaE*nKBF$+F4CgPexnmRd`Kq+i}+qgo!q@RHYOzjxw7 zyW2@KLT;DP-E^33Lun5mR4)L`mYVFOd&SaxlloKMYN6Ej#ufsY;u5C`N;C`7^;t*kN ze{1o?mB-Xui~rwcJVpnQ+AqKIc>cNUc*i#Q+m|a6cF|{?8;I{yDdiP#_S{tdRqzh) zsT{_+K7*D}iJQlRdzY1DWEJpbYCZwf(bliP5+!L1U zwKBr(itVM67ZQqM*t70rOQjWe9w$r`EAP33#4tayQWlPLU#K5`1=kkJRr2Q;fq%AL zPena^`f`n1M1+0P3pf13D6?jz9OArNU{km_>@*vw?$yxZ{=1jheXY;QEf27J%QOT&T<2SsxC%gOI=F^Jb=vCGM zhJO35UzXslPd0#nzGANL(l|W? z;H4Tg=jpE>kqYA6)~dd9{hmv0jT1E~W65<$HQk*edk5}%A0O-%Ke?8*wp5-)+|Um^ z*zXM___fd`H{xG)wa3c`uD7uJDz&XK@eaH_p*nxG8%XvBNBy?K;eLJh_)Y$D%i|?8 zU_tH$%xZ9Km67-2*pYtgqmvDCM)azE(diQPukc#0%@D3F`7Kd$_v1E-v9xU?RW_l5 z79J|g$<99u+n=UBmIgZZ{?ga*>-i>uhvQQl>D2~JK)-aaPD&X|*ZbXx=)E@~RKhvw zw~PUvlkw3Yw&HN&?-0iFuVVum*&oF@;5+?@m79pVw+afAzwNo+6P{*KDIyLx8SXrv z|Kny{%j-D<)pLmi0&Y$cNTzhmpP>W*}{?!u#SWi`I1eo=pPo(>eU(U z6d49Gr*^&tW!wJg4?1IJK1C~O!zpz`GYzR#l5zw6$#eNN&sA}^LhNZLlvM_U7v4K7 z=ngh1B3jIS=zaM0fV6S#!)S<1Z12cLl9?p@0@1gBQ7%*N)raQ40lRmJW(_t)#9>Fm z6Y5%|kE!~FE#5c<%2YyV;K^pLXGgkliS$pcX*CoYc(f9R^I6~#$usC@iopBIOUKMv zfn$TY+Wg=!GLaYH=gkRu$yet|7lnvjXUJ=e$~A3O>k%Dmq@+Qt2u)9NkWX6!W; zW;X*nau36vW5PtKS9L46OP24A?R@Z4UG6I+w>7Y)FPE9sQWnh#S*A)Ht_=z{EA%Z> zWq^MS`IMJ>o*1gj(?8m;4;MEcz18fGF}MEWda3&WW(+GRY6?Da+TXA|nqe2_3e}DM zcl?s3L+jnsoo#6~q*Tra=3AaD=ALM;EZjh2ZiY*RuX&L`8<$SaGd=-(Yd65w_Mg=` zkjUDM`7qJScK67Wf%y)aqx=ZBY z#|NBV7otPAl#oj6Z{k;y*j$bbp|xzYRaA?Ja4 z@7RB)TGC-FO}z1FUbH3B>a9RoD%-wZvY=ahgs$+cAC*WAr0$!A(K`~gdP$)?Wi5{7 zW(J~%MFZlR)pB;}5d%TVb*Axnys>>BxXn)|M+YaQVR;iKvsH*DNc0KgX<_)Qu?0 z%h^15AfYf{TD=;c9D+lxv>zKj)NQADtN^b6-NoCMMJ zkQR%B>F~nB!p$Ji|G|SVpV4q8EUEzKxVxG}f|diX0*3>=OI+dF?7}^LvDtTjv<1>h z&Z>KdDgvDApWn6*XIVM2~NI{@5KRrMtKo`_SA)rMFKuRR- zZEfGo>{(Q5q-p4LDfp}j2%KXR>Xz>x@#BBo>T}7s@_x;4x?(sri_ygaxQd@Ohre#B o$Ks4;kZBxZg)#^5zWe0$ywsS|9C=aDmGq3Z`hB$uRjZKy0`~gKJOBUy diff --git a/img/ReverseNoteType.png b/img/ReverseNoteType.png deleted file mode 100644 index 318e722332429c44aae68dd4a6d2d83fbed38656..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10639 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. - -[[deckPicker]] -== قائمة الرزم -*_ملاحظة:_* يفترض هذا القسم أنك تفهم معنى https://docs.ankiweb.net/#/getting-started?id=key-concepts[الرزم والبطاقات]_ - -قائمة الرزم هي ما تراه عندما تبدأ أنكيدرويد. إنها تعرض قائمة رزم تحوي كل بطاقاتك، -وتسمح لك بتنفيذ عدة إجراءات: - -++++++++++ - -++++++++++ - -=== زر الإضافة -يُستخدم زر + الأزرق في أسفل اليمين لإضافة محتوى إلى أنكيدرويد. يؤدي الضغط عليه إلى إظهار الخيارات -الثلاث التالية المشروحة في https://www.youtube.com/watch?v=F2K1gOSdIZA[الفيديو]. - -إضافة :: اختر هذا الخيار إذا كنت تريد إنشاء بطاقات استذكار خاصة بك (ملحوظات) في أنكيدرويد. -كلمتا «ملحوظات» و «بطاقات» لها معاني محددة في أنكي، وهي مشروحة في https://docs.ankiweb.net/#/getting-started?id=key-concepts[دليل أنكي الرئيسي]. -شاهد الفيديو في الأعلى لمقدمة سريعة لإضافة الملحوظات، أو اطلع على قسم <> في الأسفل لتفاصيل أكثر. - -الحصول على رزم مشتركة :: ينزل رزمة بطاقات من الإنترنت شاركها مستخدم آخر - . تأكد من أنك متصل بالإنترنت. - . انقر + ثم *الحصول على رزم مشتركة* ليفتح أنكي ويب. - . اختر فئة، أو أدخل عبارة بحث. - . انقر *Info* على رزمة تريد دراستها. - . اسحب للأسفل وانقر *Download*. - . سينزل متصفح الويب الملف ويعرض تنبيه «اكتمل التنزيل». - انقر هذا الزر. - . سيظهر أنكيدرويد، وتظهر نافذة تأكيد. انقر زر *إضافة*. - . عند اكتمال الاستيراد، يجب أن تكون رزمتك جاهزة للدراسة. - -إنشاء رزمة :: ينشئ رزمة جديدة فارغة - . انقر زر + واختر «إنشاء رزمة» - . اختر اسمًا للرزمة، «ياباني جديد» مثلًا - . أضف بطاقات إليها حسب تعليمات «إضافة» في الأعلى - -=== شريط التطبيق -في أعلى الشاشة في أنكيدرويد هناك شريط تطبيق يحتوي أزرار لتنفيذ عدة إجراءات. -الإجراءات التالية متوفرة في شريط التطبيق في قائمة الرزم: - -زر قائمة التنقل :: يؤدي النقر على الأيقونة في أقصى اليسار إلى إظهار <> -للتنقل السريع بين الأقسام الرئيسية من التطبيق. - -زر المزامنة :: الزر الدائري الذي له أسهم على اليمين هو لمزامنة بطاقاتك مع السحابة، -كما هو مشروح في قسم <>. - -زر القائمة المنسدلة :: في أقصى اليمين هناك قائمة منسدلة تحوي إجراءات مستخدمة بشكل أقل. -هذه الإجراءات مشروحة في الأسفل. - -**إرشاد:** يؤدي النقر المطول على أي مكان في شريط التطبيق إلى إظهار تلميح نصي -يصف وظيفة الزر! - -=== دراسة رزمة -لدراسة بطاقات رزمة، انقر على اسم الرزمة (أو زر «دراسة» في الأجهزة اللوحية التي حجمها 10 بوصات)، لينتقل أنكيدرويد إلى وضع الدراسة. - -لاحظ أن الرزمة المحددة حاليًا معلّمة بخلفية رمادية، وإذا كان لديك أي <> -فستُعلَّم بلون خط أزرق. الرزم المفلترة مشروحة في قسم آخر من هذا الدليل. - -=== إجراءات الرزمة الأخرى -يؤدي النقر المطول على رزمة إلى إظهار قائمة الإجراءات الأخرى التي يمكن إجراؤها على تلك الرزمة: - -إعادة تسمية :: استخدم هذا الخيار لإعادة تسمية الرزمة - -خيارات الرزمة :: يسمح لك النقر على خيارات الرزمة بضبط عدة خيارات دراسة مخصوصة بالرزمة. -انظر https://docs.ankiweb.net/#/deck-options?id=deck-options[دليل الحاسوب] لمزيد من المعلومات -عن هذه الخيارات. - -دراسة مخصصة :: يسمح لك باختيار إعدادات مضبوطة مسبقًا للدراسة خارج الجدول المعتاد، مثل رفع حد الدراسة لذلك اليوم. -انظر قسم <> لمعلومات أكثر. - -حذف الرزمة :: استخدم هذا الخيار لحذف الرزمة (ملاحظة: لا يمكن التراجع عن هذا الخيار، لكن تستطيع <>) - -تصدير الرزمة :: يمكن استخدام هذا الخيار لمشاركة رزمة مع المستخدمين الآخرين. انظر قسم <> لمزيد من المعلومات. - -نكش :: هذا الخيار مرئي فقط عندما تحتوي الرزمة المحددة على بطاقات مدفونة يدويًا أو تلقائيًا. - -إعادة إنشاء / إفراغ :: إذا كانت الرزمة المحددة <>، يسمح لك هذا الخيار -بإعادة إنشائها أو إفراغها من البطاقات. - -==== المناطق التي يمكن النقر عليها في الرزم -لكل رزمة في القائمة ثلاث مناطق يمكن النقر عليها: - -مُوسِع الرزمة :: إذا كنت تستخدم https://docs.ankiweb.net/#/getting-started?id=decks[الرزم الفرعية]، -فقد يظهر زر إيساع في أقصى يسار الرزمة، والذي يمكن استخدامه لإظهار الرزم الفرعية وإخفائها. -أيقونة ▶ تعني أن للرزمة رزمًا فرعية يمكن إظهارها، وأيقونة ▼ تعني أن للرزمة رزمًا فرعية يمكن إخفاؤها، -وعدم وجود أيقونة يعني أن الرزمة ليس لها رزم فرعية. ملاحظة: يمكن إنشاء الرزم الفرعية باستخدام طريقة التسمية "والد::فرعي". - -اسم الرزمة :: هذه المنطقة الرئيسية القابلة للنقر، والتي تأخذك إلى شاشة الدراسة إذا كان هناك بطاقات لتراجعها. - -أزرار العد :: أزرار العد في أقصى يمين كل رزمة هي بمثابة منطقة منفصلة قابلة للنقر تأخذك إلى موجز الرزمة -بدلًا من شاشة الدراسة. هذا مفيد إذا كنت تريد الاطلاع السريع على عدد البطاقات المتوفرة في الرزمة. - -=== إجراءات متقدمة -بعض الإجراءات الإضافية الأقل استخدامًا موجودة في القائمة المنسدلة، وهي مختصرة كالتالي: - -تراجع :: بعد مراجعة البطاقة الأخيرة في جلسة دراسة، تستطيع التراجع عنها من هنا. - -فحص قاعدة البيانات :: يمكن لهذا أن يصلح كثيرًا من مشاكل قاعدة البيانات، كما يحذف أي وسوم غير مستخدمة. -إذا واجهت أي مشكلة في مجموعتك، فهذا أول شيء عليك تجربته. - -ملاحظة: تحت بعض الظروف، تنقل هذه الميزة البطاقات إلى رزمة تدعى _!Recovered Cards_. -إذا حدث هذا، انقل البطاقات إلى رزمتها المناسبة من خلال <> -واحذف رزمة _!Recovered Cards_ بعد أن تفرغ. - -فحص الوسائط :: جرب هذا إذا واجهت أي مشكلة عند مزامنة الوسائط. - -البطاقات الفارغة :: يحذف البطاقات الفارغة من مجموعتك. انظر https://docs.ankiweb.net/#/templates/generation?id=card-generation-amp-deletion[دليل الحاسوب] -لمزيد من المعلومات. - -استعادة من نسخة احتياطية :: يسمح لك باستعادة واحدة من <>. - -إدارة أنواع الملحوظات :: يسمح لك بإضافة أنواع الملحوظات، وتعديلها، وحذفها. -انظر قسم <> لمزيد من المعلومات حول هذه الميزة المتقدمة. - -استيراد :: يستورد ملف أنكي .apkg يحتوي رزمة. انظر قسم <> لمزيد من المعلومات. - -تصدير المجموعة :: يصدر كل مجموعتك كملف collection.apkg. انظر قسم <> لمزيد من المعلومات. - -=== عدادات الرزم -هناك ثلاث أرقام بجانب كل رزمة. يشير الرقم الأزرق على اليسار إلى عدد البطاقات الجديدة -التي عليك تعلمها اليوم. يعرض أنكي 20 بطاقة جديدة كل يوم بشكل افتراضي، وتستطيع تغيير -هذا إذا أردت. يشير الرقم الأحمر في الوسط إلى البطاقات المستحقة للدراسة اليوم والتي هي -في طور التعلم، ويشير الرقم الأخضر إلى البطاقات المستحقة للمراجعة (البطاقات التي -تخرجت من طور التعلم). في رزمة لم تدرسها من قبل أبدًا، سيكون كلا الرقمان الأخيران صفرًا. - -كما هو موضح في الأعلى، يؤدي النقر على العدادات إلى أخذك إلى شاشة موجز الرزمة. - -[[drawer]] -== قائمة التنقل -++++++++++ - -++++++++++ - -يمكن فتح قائمة التنقل من أغلب المناطق في التطبيق بالضغط على أيقونة القائمة اليسرى، -أو بالسحب من الجانب الأيسر من الشاشة. تستخدم القائمة للتنقل السريع بين أقسام مختلفة -من التطبيق. تستطيع التنقل إلى الشاشات التالية: - -الرزم :: يأخذك إلى الشاشة الرئيسية من التطبيق حيث تُعرض قائمة البطاقات. -انظر <> لمزيد من المعلومات. -متصفح البطاقات :: يظهر قائمة كل بطاقاتك. انظر (<>) لمزيد من المعلومات. -الإحصائيات :: يساعدك على تعقب تقدم دراستك. انظر (https://docs.ankiweb.net/#/stats?id=statistics[دليل أنكي] -أو قسم <<الإحصائيات المتقدمة,here>> لمزيد من المعلومات. -الوضع الليلي :: يحوّل التطبيق إلى الوضع الليلي والذي يجده كثير من المستخدمين أقل إجهادًا للعيون، -خصوصًا عند المراجعة في الظلام. انظر -https://github.com/ankidroid/Anki-Android/wiki/Advanced-formatting#customize-night-mode-colors[الويكي] -لكيفية تخصيص خلفية البطاقات ولون الخط في الوضع الليلي. -الإعدادات :: يسمح لك بتخصيص التطبيق. انظر <<الإعدادات,more info here>> لمزيد من المعلومات. -مساعدة :: يفتح صفحة الويب هذه. -إرسال الآراء والاقتراحات :: الحصول على الدعم من فريق أنكيدرويد. - -[[deckOverview]] -== شاشة موجز الرزمة -++++++++++ - -++++++++++ -في قائمة الرزم، إذا ضغطت على منطقة العدادات ستنتقل إلى شاشة موجز الرزمة. -تظهر هذه المنطقة على يمين قائمة الرزم دائمًا في الأجهزة اللوحية. - -تستطيع رؤية موجز للرزمة هنا، وإنشاء جلسات دراسة مخصصة، وإعادة إنشاء / إفراغ الرزم المفلترة، وتغيير خيارات الرزمة. -يأخذك زر الدراسة عندما يكون مرئيًا إلى شاشة الدراسة لتلك الرزمة. - -=== شريط التطبيق -تعتمد الأيقونات التي تظهر هنا على ما إذا كانت الرزمة عادية أم مفلترة. - -==== الرزم العادية - -الدراسة المخصصة :: يسمح لك الضغط على أيقونة المفتاح بإنشاء جلسة مخصصة، للمراجعة الإضافية خارج -الجدول المعتاد، أو دراسة بطاقات معينة فقط مثلًا. انظر قسم <> لمزيد من المعلومات. - -==== الرزم المفلترة - -إفراغ الرزمة :: يؤدي النقر على زر الضرب إلى إفراغ كل البطاقات في الرزمة المفلترة الحالية (يعيدها إلى رزمها الأصلية). - -إعادة إنشاء الرزمة :: يؤدي النقر على زر إعادة إنشاء إلى إعادة إنشاء الرزمة المفلترة الحالية -بناءً على الإعدادات المخصصة في خيارات الرزمة المفلترة. - -==== القائمة المنسدلة - -خيارات الرزمة :: تسمح لك بإعداد بعض الخيارات المتعلقة بالرزمة الحالية، مثل عدد البطاقات الجديدة -والمراجعات التي تعرض كل يوم. -الرجاء الاطلاع على https://docs.ankiweb.net/#/deck-options?id=deck-options[دليل الحاسوب] -لمزيد من المعلومات حول هذه الخيارات. - -نكش :: هذا الخيار مرئي فقط عندما يكون في الرزمة بطاقات مدفونة يدويًا أو تلقائيًا. - -[[reviewer]] -== شاشة الدراسة -يؤدي الضغط على اسم رزمة في قائمة الرزم أو زر الدراسة في شاشة موجز رزمة إلى أخذك إلى شاشة الدراسة. -++++++++++ - -++++++++++ - -=== الأساسيات -إذا لم تستخدم أنكي على الحاسوب من قبل، فقد ترغب في الاطلاع على -https://docs.ankiweb.net/#/getting-started?id=videos[الفيديو التعريفي] -أولًا قبل متابعة القراءة، لأنه يشرح عملية المراجعة الأساسية. - -في أعلى اليسار هناك ثلاث أعداد والتي تدل على البطاقات الجديدة وبطاقات التعلم وبطاقات المراجعة من اليسار. -هذه الأعداد مشروحة بتفصيل أكثر في الفيديوهات التعريفية لبرنامج الحاسوب، -لذلك يرجى https://docs.ankiweb.net/#/getting-started?id=videos[الاطلاع عليها]. - -بعد أن تطّلع على سؤال بطاقة، وتتذكر جوابه أو تقرر أنك لا تعرفه، انقر زر «إظهار الجواب». -عندما تفعل، ستتغير المنطقة السفلية لإظهار 2-4 زر إجابة، اعتمادًا على إجاباتك السابقة للبطاقة. -تظهر الأزرار الوقت الذي ستظهر فيه البطاقة في المرة القادمة، لذلك فـ 10د تعني «10 دقائق» -و 5 ي تعني «5 أيام». تستطيع النقر على هذه الأزرار لاختيار جواب. - -لجعل المراجعة أسهل، تستطيع إعداد إيماءات (مثل النقر والسحب) للإجابة عن البطاقات -بدون استخدام الأزرار. انظر قسم <> لمزيد من المعلومات حول إعداد الإيماءات. - -=== شريط التطبيق -لشريط التطبيق أعلى شاشة الدراسة عدة أزرار لتنفيذ إجراءات شائعة عديدة. -يُحدَّد عدد الأزرار المعروضة تلقائيًا بناءً على حجم شاشتك ودقتها. إذا لم يكن هناك مساحة كافية -لإظهار زر إجراء ما، فسيكون الإجراء متوفرًا في القائمة بدلًا من ذلك. إذا لم تكن متأكدًا مما يفعله زر ما، -تستطيع الضغط المطول عليه لإظهار اسم الإجراء. تتوفر الإجراءات التالية: - -تراجع :: يتراجع عن الجواب الذي اخترته للبطاقة الأخيرة (يظهر الزر دائمًا). -تعليم البطاقة :: يضيف وسم "marked" (مُعلَّم) إلى الملحوظة الحالية لتسهيل إيجادها من خلال المتصفح. -هذا مفيد عندما تريد تنفيذ إجراء على الملحوظة لاحقًا، مثل البحث عن معنى كلمة عندما تعود إلى المنزل. -تظهر البطاقات المعلمة نجمًا صغيرًا في الزاوية العليا اليمنى عند المراجعة. -تأشير البطاقة :: يضيف «مؤشرًا» ملونًا (أحمر، برتقالي، أخضر، أزرق). يمكن استخدام هذا كعلامة عامة -للتفريق بين بطاقاتك. المؤشرات ممثلة بأرقام من 1 إلى 4، تدل على الألوان السابقة. -تحرير البطاقة :: يفتح شاشة تحرير الملحوظة، حيث تستطيع تغيير المحتوى المعروض في البطاقة. -(اطلع على قسم <>) للمساعدة. -إخفاء / حذف :: يوفّر خيارات لدفن الملحوظة الحالية أو البطاقة، أو تعليقها، أو حذفها. - -- **دفن البطاقة / دفن الملحوظة: ** يخفي البطاقة أو كل بطاقات الملحوظة من المراجعة -حتى اليوم التالي. (إذا أردت نكش البطاقات قبل ذلك، تستطيع اختيار «نكش» من قائمة النقر المطول -في <>، أو <>.) -هذا مفيد عندما لا تستطيع الإجابة عن بطاقة الآن أو تريد العودة إليها لاحقًا. يمكن أن يحدث الدفن -تلقائيًا للبطاقات من الملحوظة نفسها. إذا كانت البطاقات في طور التعلم عند دفنها، -فستُنقل إلى صف البطاقات الجديدة أو المراجعات قبل دفنها. -- **تعليق البطاقة / تعليق الملحوظة: ** يخفي بطاقة أو كل بطاقات الملحوظة من المراجعة حتى يتم -تفعيلها يدويًا (بالنقر المطول على بطاقة في <<المتصفح, card browser>>). -هذا مفيد إذا كنت تريد تجنب مراجعة الملحوظة لبعض الوقت، لكنك لا تريد حذفها. إذا كانت البطاقات -في طور التعلم عند تعليقها، فستُنقل إلى صف البطاقات الجديدة أو المراجعات قبل تعليقها. -- **حذف الملحوظة: ** يحذف الملحوظة وكل بطاقاتها. - -إعادة تشغيل الصوت :: إذا كانت البطاقة تحتوي على صوت في الأمام أو الخلف، فسيُشغَّل مجددًا. -تفعيل / إيقاف السبورة :: هذا الإجراء يفعّل أو يوقف ميزة السبورة للرزمة الحالية. تسمح لك ميزة -السبورة بالرسم على الشاشة. هذا مفيد خصوصًا للتمرن على رسم أحرف لغات مثل اليابانية. -عند تفعيل السبورة للرزمة الحالية، يصبح إجراءان جديدان متوفرين لمسح السبورة وإخفائها. -إيقاف السبورة يخفي هذين الإجراءين بالإضافة إلى السبورة نفسها. -خيارات الرزمة :: يفتح خيارات خاصة بالرزمة. انظر https://docs.ankiweb.net/#/deck-options?id=deck-options[دليل الحاسوب] -لمزيد من المعلومات حول هذه الخيارات. -تحقق من النطق :: هذا الإجراء يفعل أو يوقف شريط مسجل الصوت المؤقت في أعلى البطاقة. -تسمح لك هذه الميزة بتسجيل صوتك وتشغيله. تُستخدم بشكل رئيسي للتحقق من النطق. -يتألف هذا الشريط من ثلاث أزرار: تشغيل، وإيقاف، وتسجيل من الميكروفون. -يمكن استخدام هذه الأداة عند رؤية السؤال أو الجواب. - -=== بلوغ نهاية جلسة الدراسة -عندما تنهي البطاقات المستحقة اليوم، فستُنقل إلى قائمة الرزم وتظهر لك رسالة تهنئة. -تستطيع عندها اختيار رزمة أخرى، أو إذا انتهيت من الدراسة اليوم، تستطيع إغلاق أنكيدرويد -بالضغط على زر «الهوم» الخاص بهاتفك (تستطيع فعل هذا أثناء المراجعة إذا أردت). - -إذا كنت تريد الاستمرار بدراسة الرزمة نفسها، انقر على الرزمة مجددًا لتظهر لك عدة خيارات لاستكمال الدراسة. -انظر قسم <> لمزيد من المعلومات حول الدراسة المخصصة. - - -[[addingNotes]] -== شاشة إضافة ملحوظة -*_ملاحظة:_* _يفترض هذا القسم وما بعده أنك تفهم معنى -https://docs.ankiweb.net/#/getting-started?id=notes-amp-fields[الملحوظات، والحقول، وقوالب البطاقات، وأنواع الملحوظات]_. - -لإضافة ملحوظة جديدة، انقر زر + أسفل قائمة الرزم واختر «إضافة». -++++++++++ - -++++++++++ - -تتوفر الميزات التالية في شاشة إضافة ملحوظة: - -النوع :: يسمح لك باختيار نوع الملحوظة التي تريد إضافتها. -إن نوع «أساسي» يفي بالغرض في معظم الأحيان، لكن إذا كنت تريد بطاقة إضافية معكوسة مثلًا -(تظهر حقل «خلف» أمام البطاقة)، تستطيع اختيار نوع ملحوظة «أساسي (مع بطاقة معكوسة)». - -الرزمة :: يسمح لك بتغيير الرزمة التي ستضاف إليها البطاقات. - -الحقول :: أسفل مُحدِّد الرزمة هناك حقول الملحوظة (مثلًا لحقل ملحوظة «أساسي» حقلي «أمامي» و«خلفي»). -عند النقر على حقل، تظهر لوحة مفاتيح تسمح لك بإدخال معلومات. - -أزرار الوسائط :: بجانب كل حقل هناك أيقونة إرفاق تسمح لك بإضافة وسائط إلى ملحوظتك -(هذه الميزة في الطور التجريبي حاليًا). زر إضافة صورة يسمح لك بإضافة صور من خلال كاميرا جهازك -(إذا كانت متوفرة)، أو من خلال مكتبة الصور. خيار تسجيل الصوت يسمح لك بتسجيل صوتك -ووضعه في حقل. يسمح لك المحرر المتقدم بالبحث عن ترجمات أو ملفات نطق على الإنترنت. - -الوسوم :: يفتح نافذة تسمح لك بإضافة الوسوم وحذفها من الملحوظة. - -البطاقات :: يظهر أسماء البطاقات التي ستُولَّد من نوع الملحوظة المحدد. يؤدي النقر على هذا الزر -إلى فتح نافذة تسمح لك بمعاينة الشفرة المصدرية لقالب بطاقة النوع المحدد. من هناك تستطيع تحرير -القوالب ومعاينتها وإضافتها وحذفها. انظر قسم -https://docs.ankiweb.net/#/templates/intro?id=card-templates[البطاقات والقوالب] -في دليل أنكي للحاسوب لمزيد من المعلومات حول قوالب البطاقات. - -اضغط ضغطًا مطولًا في حقل ما لإضافة عبارة ملء فراغات حول النص المحدد، أو عبارة فارغة إذا لم يكن هناك نص محدد. - -بعد الانتهاء من إدخال محتويات الملحوظة، انقر زر علامة صحيح في شريط التطبيق في الأعلى -لإضافتها إلى مجموعتك. أو كبديل، إذا أردت الرجوع إلى ما كنت تفعله بدون الحفظ، تستطيع النقر على -أيقونة التطبيق أو زر الرجوع. - -[[noteFormattingToolbar]] -=== شريط أدوات تنسيق الملحوظات - -يحتوي شريط أدوات تنسيق الملحوظات على أزرار تنسيق نصوص أساسية (خط غامق، خط مائل، خط سفلي، خط أفقي، إضافة عنوان، تغيير حجم الخط، <>، وإضافة عبارات ملء الفراغات). - -ويسمح أيضًا بإضافة أزرار جديدة معرفة من قبل المستخدم باستخدام HTML. HTML هي لغة قوية تسمح بتخصيص لا حدود له لبطاقاتك. https://github.com/ankidroid/Anki-Android/wiki/Note-Editor-Toolbar-HTML-Samples[الويكي] تحتوي على بعض عينات الكود الشائعة كبداية. - -يمكن حذف زر معرف من قبل المستخدم بالضغط المطول على الزر واختيار «حذف». - -[[editingNotes]] -== شاشة تحرير الملحوظة -يمكن فتح شاشة التحرير باختيار تحرير عند المراجعة، أو بفتح البطاقة في المتصفح. -شاشة التحرير مشابهة لشاشة الإضافة المذكورة في الأعلى، مع بعض الاختلافات الجوهرية: - - - * يعمل تغيير الرزمة على البطاقة المحددة (التي تحتها خط في صندوق «البطاقات»). - إذا كان لنوع ملحوظة أكثر من بطاقة، فقط البطاقة المحددة حاليًا تُنقل إلى الرزمة الجديدة. - - * تغيير قائمة «النوع» المنسدلة ينقلك إلى وضع تغيير نوع الملحوظة. في هذا الوضع، لا يُسمح - بتعديل محتوى الملحوظة (الزرمة، والحقول، إلخ)، وإذا كان نوع ملحوظة مخصص بأكثر من حقلين مستخدمًا، - فستظهر أزرار إضافية تسمح لك بالتحكم بتوزيع الحقول إلى نوع الملحوظة الجديد. - -إذا كان لنوع الملحوظة المحدد بطاقات أقل من النوع السابق، فسيُحتفظ بالبطاقات الأولى فقط. -على سبيل المثال، تغيير النوع من «أساسي (مع بطاقة معكوسة)» إلى «أساسي» يؤدي إلى -إبقاء البطاقة الأولى فقط. لتحذيرك حول هذا، سيظهر النص في منطقة «البطاقات» بلون أحمر، -وستُعرض نافذة تأكيد قبل حفظ الملحوظة. - - إرشاد: لتغيير نوع عدة ملحوظات في دفعة واحدة، أو لتخصيص توزيع البطاقات، استخدم -خيار «تغيير نوع الملحوظة» في المتصفح في نسخة الحاسوب. - -تتوفر أيضًا عدة خيارات متقدمة في القائمة الرئيسية: - -إضافة ملحوظة :: إنشاء ملحوظة جديدة فارغة. -نسخ البطاقة :: نسخ الملحوظة الحالية إلى ملحوظة جديدة يمكن تحريرها. -إعادة تعيين التقدم :: ينقل البطاقة إلى نهاية صف البطاقات الجديدة. تُمسح حالة البطاقة الحالية، لكن ليس سجل مراجعاتها. -إعادة جدولة :: يسمح لك بإعادة الجدولة كبطاقة مراجعة في تاريخ محدد. هذا مفيد إذا استوردت مواد تعلمتها من قبل، -وتريد البدء بها بفواصل أولية أكبر. - -[[browser]] -== البحث/التصفح -تستطيع البحث عن بطاقات أو تصفحها بالنقر على زر «متصفح البطاقات» في <>. - -++++++++++ - -++++++++++ - -تبدأ نافذة المتصفح بإظهار كل البطاقات في الرزمة المحددة حاليًا. تستطيع البحث عن بطاقات في الرزمة المحددة -بالنقر على أيقونة العدسة المكبرة في الأعلى. تستطيع تغيير الرزمة المحددة (أو التغيير إلى كل الرزم) -باختيار الرزمة من القائمة المنسدلة في أعلى اليسار. - -بشكل افتراضي، العمود الأول في المتصفح يعطي النص الذي سيظهر في السؤال (الجانب الأمامي) من البطاقة، -والعمود الثاني يظهر نص الجواب (الجانب الخلفي) من البطاقة. - -يمكن ضبط العمود الأول لإظهار https://docs.ankiweb.net/#/editing?id=customizing-fields[«حقل الفرز»] -لعرض أكثر إيجازًا. يمكن ضبط العمود الثاني لإظهار عدة متغيرات بالنقر على القائمة المنسدلة في عنوان العمود. - -لاحظ أن محتوى العمودات يُحسب بشكل ديناميكي أثناء تنقلك بين قائمة البطاقات. - -من نتائج البحث، يمكنك النقر على بطاقة لتحريرها (انظر قسم <> في الأعلى)، -أو النقر المطول على بطاقة لإظهار قائمة تسمح لك بتنفيذ الإجراءات التالية: - -تعليم / إلغاء تعليم الملحوظة :: إضافة / حذف وسم "marked" من الملحوظة. تلون بطاقات الملحوظات المعلمة بلون بنفسجي. -تأشير البطاقة :: تغيير «المؤشر» الملون على البطاقة أو حذفه. تلون البطاقات المؤشرة بلون مؤشرها. -تعليق / تفعيل البطاقة :: تلون البطاقات المعلقة بلون أصفر، ولا تظهر خلال المراجعة. -حذف الملحوظة :: يحذف ملحوظة البطاقة المحددة وكل بطاقاتها. -لا يمكن الرجوع عن هذا الإجراء إلا <>. -معاينة :: معالجة البطاقة المحددة لكي تستطيع رؤية ما ستكون عليه عند مراجعتها. -تحديد بطاقات متعددة :: يؤدي النقر المطول على بطاقة واحدة إلى تحديد هذه البطاقة. -عندما تكون البطاقة محددة، وتنقر نقرًا مطولًا على بطاقة أخرى في الشاشة، فسيتم تحديد كل البطاقات -بين البطاقة الأولى والبطاقة الأخيرة. يسمح هذا بتنفيذ إجراءات على عدة بطاقات في الوقت نفسه. - -=== البحث -يدعم أنكيدرويد كل عبارات البحث المدعومة في نسخة الحاسوب، ما يسمح لك بإجراء بحوثات معقدة. بعض الأمثلة: - - tag:marked :: يظهر البطاقات التي لها وسم "marked" - is:due :: يظهر البطاقات التي بانتظار المراجعة فقط - أمام:أرنب :: يظهر البطاقات التي يحتوي حقلها الأمامي على «أرنب» فقط ولا غير -flag:1 :: يظهر البطاقات التي لها مؤشر أحمر فقط - -لقائمة كاملة بعبارات البحث الممكنة، اطلع على https://docs.ankiweb.net/#/searching?id=searching[دليل الحاسوب]. - -كبديل، يمكن تطبيق بعض الفلاتر الشائعة (البطاقات المعلمة، والمعلقة، والموسومة) بدون إدخالها يدويًا -باختيارها من القائمة المنسدلة. كما تستطيع حفظ عبارات بحث شائعة واسترجاعها من القائمة. - -[[filtered]] -== الرزم المفلترة - -أنكي مصمم لتعزيز عملية التعلم، بحيث تدرس لأقصر مدة كافية من أجل تذكر معظم بطاقاتك. -حالما تظهر شاشة التهنئة، تصبح الدراسة أكثر كحالة عوائد متناقصة: كمية الوقت التي تقضيها -بمذاكرة البطاقات نفسها مجددًا لا تستحق الزيادة البسيطة في مقدار تذكرك. - -مع ذلك، إذا كان لديك اختبار قريب، أو تريد تمضية بعض الوقت ببساطة، فمن الممكن الاستمرار -بالمراجعة حتى بعد ظهور شاشة التهنئة. - -«الرزمة المفلترة» هي رزمة مؤقتة تحتوي بطاقات بناءً على عدة معايير، مثل «منسي اليوم»، -أو «له سمة (صعب)»، وما إلى ذلك. بعد دراسة بطاقات في رزمة مفلترة، أو عند حذف الرزمة، -تعود البطاقات تلقائيًا إلى رزمها الأصلية. - -أسهل طريقة لإنشاء رزمة مفلترة هي بالضغط المطول على رزمة ثم اختيار خيار «دراسة مخصصة». - -يستطيع المستخدمون المتقدمون إنشاء رزمة مفلترة يدويًا باختيار «إنشاء رزمة مفلترة» من القائمة المنسدلة -في شاشة قائمة الرزم. - -لمزيد من المعلومات حول الرزم المفلترة، انظر https://docs.ankiweb.net/#/filtered-decks?id=filtered-decks-amp-cramming[دليل الحاسوب]. - -[[RTL]] -== استخدام اللغات المكتوبة من اليمين إلى اليسار في أنكيدرويد -لأنكي وأنكيدرويد دعم كامل للغات التي تكتب من اليمين إلى اليسار مثل العربية، والعبرية، والفارسية. - -=== تعديل الحقول من اليمين إلى اليسار -يمكن ضبط الحقول كحقول مكتوبة من اليمين إلى اليسار (حاليًا ممكن فقط من أنكي للحاسوب). عندما يضبط حقل بهذا الشكل، تتم محاذاة النص إلى اليمين في حقول التحرير وتظهر علامات الترقيم في آخر (يسار) الجمل بشكل صحيح. تُعرض النصوص التي تحوي على مجموعات حروف تكتب من اليسار إلى اليمين بشكل صحيح أيضًا. - -اتجاه النص مهم خصيصًا لتحرير عبارات ملء الفراغات التي تكتب من اليمين إلى اليسار وإنشائها، حيث إن صياغة هذه العبارات تحتوي على أحرف محايدة الاتجاه وأحرف تكتب من اليسار إلى اليمين في الوقت نفسه. لذلك ينصح باستخدام نوع ملحوظة مخصص لعبارات ملء الفراغات التي تكتب من اليمين إلى اليسار. - -=== عرض الحقول من اليمين إلى اليسار أثناء الدراسة -لعرض حقل من اليمين إلى اليسار، مع المحاذاة إلى اليمين والاتجاه المناسب، يجب إحاطة الحقل بعنصر div أو span مع تحديد اتجاه RTL: - -